Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Shout en 10 Febrero 2015, 23:34 pm



Título: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: Shout en 10 Febrero 2015, 23:34 pm
Buenas!

Un amigo me pasó un ejecutable que está empaquetado con Enigma, y estoy intentando desempaquetarlo para practicar.

Estoy usando Olly 1.10 con StrongOD y Phant0m; así no me detecta el anti-debug.

Sin embargo, al buscar información en internet (soy bastante nuevo desempaquetando), lo único que encontré fue cómo desempaquetar Enigma 4.10, pero es que la versión usada en este ejecutable es Enigma moddeado, por lo tanto, aún si me miro el vídeo, no me servirá de mucho.

El ejecutable es, básicamente, un loader con dos inputs (name / serial).
Al clickear en "Register license", sale una ventana (CreateWindowExA), y te dice que es incorrecto, y se cierra.

Obviamente, strings no hay.

Mi progreso:
no mucho, la verdad. he puesto un breakpoint en CreateWindowExA y me fijo en el stack para ver quién lo llama, y he encontrado el WndProc, pero de ahí no estoy seguro de cómo puedo encontrar la función que se encarga de comprobar el serial.
he mirado, pero parece ser que no puedo diferenciar el código que decide si decir si el serial está bien o no (o quién sabe, a lo mejor no sale un dialog cuando está bien...)

Tampoco puedo fijarme en la función que comprueba el serial y hacer un keygen, ya que esa está virtualizada, y hasta ahora no he trabajado con máquinas virtuales...

En otras palabras:
esta es la primera vez que hago unpack de algo, hasta ahora siempre he hecho análisis estático, y alguna idea de hacia donde ir me vendría muy bien. :P

Gracias!


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: MCKSys Argentina en 11 Febrero 2015, 00:59 am
Hola!

Revisa este (https://bitbucket.org/mrexodia/enigma-devirtualizer) link.

Saludos!


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: Shout en 11 Febrero 2015, 02:21 am
Hola!

Revisa este (https://bitbucket.org/mrexodia/enigma-devirtualizer) link.

Saludos!
Gracias, pero...

...lo que me gustaría saber es cómo puedo, por ejemplo, encontrar el callback cuando clickeas el botón de registrar.
Me pierdo en el WndProc, ya que se supone que debe de haber una referencia a éste en  la función que lo asigna, pero Olly no encuentra nada... (CTRL+R)

La verdad es que no he hecho mucho live debugging, y me parece que me faltan ideas.

A parte de ir a saco y quitar la VM completamente, qué otra cosa podría hacer?

Mientras, iré revisando el código, parece ser una burrada, en el buen sentido.  ;-)


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: tincopasan en 11 Febrero 2015, 03:14 am
pues sin sacar el packer, podrías cuando pone el msj de incorrecto pausar con F12 Alt F9 y dar click en el msj de incorrecto para ver a donde vuelve


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: Shout en 11 Febrero 2015, 15:13 pm
pues sin sacar el packer, podrías cuando pone el msj de incorrecto pausar con F12 Alt F9 y dar click en el msj de incorrecto para ver a donde vuelve
es que no es tan fácil, miro a dónde devuelve pero me acaba enviando a código virtualizado, y es que ahí ya no puedo hacer nada sin quitar la VM :/


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: MCKSys Argentina en 11 Febrero 2015, 15:16 pm
No estoy seguro de que podrás quitar la VM. No conozco las últimas versiones de Enigma, pero, por ej. la VM de VMProtect no puede quitarse.

Podrías buscar los datos que ingresas y ponerle BPs de acceso, a ver si por ese lado puedes encontrar algo.

Saludos!


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: Shout en 11 Febrero 2015, 16:01 pm
No estoy seguro de que podrás quitar la VM. No conozco las últimas versiones de Enigma, pero, por ej. la VM de VMProtect no puede quitarse.

Podrías buscar los datos que ingresas y ponerle BPs de acceso, a ver si por ese lado puedes encontrar algo.

Saludos!
cómo que no puede quitarse? significa eso que es imposible de desempaquetar sin crear un devirtualizer como el que has linkeado?

y... el problema con los datos es que si una vez pones la licencia mal, se cierra, y tengo que empezar de nuevo; ahí ya todas las direcciones han cambiado.

lo que sí he intentado es poner el breakpoint en CreateWindowExA, y el programa pausa al poner un serial cualquiera (justo antes de abrir la ventana de "serial inválido"), pero es que para entonces la información ya ha sido usada, y no puedo poner un breakpoint antes, ya que el programa se cierra, y la próxima vez, la dirección de las funciones es diferente.


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: MCKSys Argentina en 12 Febrero 2015, 00:20 am
cómo que no puede quitarse? significa eso que es imposible de desempaquetar sin crear un devirtualizer como el que has linkeado?

Ojo que dije que la VM de VMProtect no puede quitarse. No conozco la de Enigma.

Los unpacking de VMProtect que tienen VM, meten la VM dentro del unpacked. Por supuesto, la parchean toda para que funcione.
Pero quitar la VM 100% es imposible: no puedes restaurar las instrucciones originales (ni hablar que previamente se ofuscan, se virtualizan y se ofusca la VM!  :xD)

Saludos!


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: Shout en 12 Febrero 2015, 00:40 am
Ojo que dije que la VM de VMProtect no puede quitarse. No conozco la de Enigma.

Los unpacking de VMProtect que tienen VM, meten la VM dentro del unpacked. Por supuesto, la parchean toda para que funcione.
Pero quitar la VM 100% es imposible: no puedes restaurar las instrucciones originales (ni hablar que previamente se ofuscan, se virtualizan y se ofusca la VM!  :xD)

Saludos!
pero... qué clase de magia negra es esa?  :huh: :huh:

creía que cualquier ofuscación podía quitarse.

por cierto, no sé si te acuerdas, pero una vez yo puse un 'reto' packeado con enigma, crees que podré usar la misma técnica que tú para desempaquetar lo que ahora estoy intentando? o al menos algo parecido?


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: MCKSys Argentina en 12 Febrero 2015, 00:46 am
creía que cualquier ofuscación podía quitarse.

Si, pero codigo ofuscado virtualizado es MUY dificil de volver atrás.

por cierto, no sé si te acuerdas, pero una vez yo puse un 'reto' packeado con enigma, crees que podré usar la misma técnica que tú para desempaquetar lo que ahora estoy intentando? o al menos algo parecido?

No recuerdo siquiera cuál fue el reto... Pero, en principio, puedes probar. No pierdes nada.


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: tincopasan en 12 Febrero 2015, 05:39 am
Si no es un soft comercial podrías subir el archivo así sería más fácil de revisar por los que saben! y los que no sabemos, bueno, hueveamos un rato a ver que tiene.


Título: Re: Desempaquetando Enigma (versión personalizada / moddeada)
Publicado por: Shout en 12 Febrero 2015, 15:25 pm
Si, pero codigo ofuscado virtualizado es MUY dificil de volver atrás.

No recuerdo siquiera cuál fue el reto... Pero, en principio, puedes probar. No pierdes nada.
Esta (http://foro.elhacker.net/ingenieria_inversa/resuelto_copy_me_hkfuzzer_v10-t424406.0.html;msg1976866#msg1976866) es tu solución. lo decía porque vi cómo te saltabas la detección de la VM, pero del packer en sí... ni idea

Y por cierto, cómo es que hay gente que desempaqueta VMProtect? si dices que no se puede quitar la VM...

Si no es un soft comercial podrías subir el archivo así sería más fácil de revisar por los que saben! y los que no sabemos, bueno, hueveamos un rato a ver que tiene.
lo siento, es comercial, no puedo subirlo  :-(