Autor
|
Tema: Desempaquetando Enigma (versión personalizada / moddeada) (Leído 7,881 veces)
|
Shout
Desconectado
Mensajes: 191
Acid
|
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. Gracias!
|
|
|
En línea
|
I'll bring you death and pestilence, I'll bring you down on my own
|
|
|
MCKSys Argentina
|
Hola! Revisa este link. Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Shout
Desconectado
Mensajes: 191
Acid
|
Hola! Revisa este 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.
|
|
|
En línea
|
I'll bring you death and pestilence, I'll bring you down on my own
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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
|
|
|
En línea
|
|
|
|
Shout
Desconectado
Mensajes: 191
Acid
|
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 :/
|
|
|
En línea
|
I'll bring you death and pestilence, I'll bring you down on my own
|
|
|
MCKSys Argentina
|
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!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Shout
Desconectado
Mensajes: 191
Acid
|
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.
|
|
|
En línea
|
I'll bring you death and pestilence, I'll bring you down on my own
|
|
|
MCKSys Argentina
|
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! ) Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Shout
Desconectado
Mensajes: 191
Acid
|
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! ) Saludos! pero... qué clase de magia negra es esa? 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?
|
|
|
En línea
|
I'll bring you death and pestilence, I'll bring you down on my own
|
|
|
MCKSys Argentina
|
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.
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
|
|