Buenas a todos
No soy mucho de postear. Me registré para postear porque hasta el momento siempre con google, los tutoriales de narvaja (u otros de cracklatinos) y los de lena151 me alcanzo para hacer todo lo que quería en ingeniería inversa. Estoy posteando ahora porque estoy *muy* trabado con unpackear el programa y no quiero hacer "trampa" y hacer un loader con dUP para modificar en memoria (aparte que nunca lo aprendi aunque no debe ser dificil).
Me gustaría que me den una pista para saber que me falta para unpack/unprotect este software. Les comento hasta donde llegue:
- Por varios metodos (y por el clasico EP del programa) parece que esta protegido por ASProtect pero todos tiran una version distinta. Que esta packeado seguro porque cuando dumpeo el archivo crece el triple en espacio.
---------------------
- Encontré que el OEP es VA 00CA5118 (imgbase 400000) ya sea traceando o haciendo una pausa y con el system o call stack volviendo para atras. El metodo general de unpacking (poner BP en esp) y el metodo de las excepciones no me funcionaron (el programa no tira ninguna excepcion).
---------------------
- Parece ser que el packer no rompe la IAT con calls al codigo del packer. Por mas que el ImpREC no la encuentre automaticamente cuando la buscas manualmente todos los import salen bien menos un par que apuntan a una parte del codigo pero luego llaman a GetProcAddress (los cuales fixeo manualmente) como se ve aca:
Esta apunta a este codigo:
El cual esta en el import section asique supongo que no hay problema.
Otra cosa rara que vi en la iat es que por alguna razon hay una call a ntdll en el medio de los imports a user32:
El cual me toma como invalid pero anda joya igual. Cuando arranco el dump veo que windows llenó la iat con la address bien del call a la funcion de ntdll como a las de user32.
---------------------
Después de todo esto y probar muchas cosas y darle mil vueltas no encuentro forma para que la aplicacion no me tire la excepcion tipica 0xc00000005 o no se cuantos ceros tiene. La tipica que quiere leer un espacio en memoria que no existe. La verdad no se que me falta o que estaré haciendo mal. Lo que hago es:
- Dumpeo el proceso con el ollydmp con el OEP modificado una vez que el soft unpackeo.
- A partir de la iat del proceso abierto fixeo la iat del dump con el ImpRec (probe saltearme este paso y es lo mismo).
- Obviamente checkeo que todo lo que hice este bien (OEP arreglado e import table) con el olly corriendo el dump.
El tema es que no parece tener ninguna protección de las tipicas de asprotect de romper la iat o usar stolen bytes. No encontre los stolen bytes por ningún lado. Si traceas no parece que haya stolen bytes de ninguna forma.
Alguien tiene una pista o algo que me pueda estar faltando? Adjunto la aplicacion por si alguien la quiere:
http://www.mediafire.com/?lu638sob9p7bi9p
Adjunto solo el exe porque alcanza para el proposito de unpackear.
Desde ya muchas gracias y perdon por el post largo!