Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Relgadon en 31 Marzo 2013, 21:18 pm



Título: Necesito una pista con programa packeado/protegido
Publicado por: Relgadon en 31 Marzo 2013, 21:18 pm
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:


(http://s9.postimg.org/fuga8bzkf/imprec2.jpg)

Esta apunta a este codigo:

(http://s11.postimg.org/s0bv8a0jn/imprec3.jpg)

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:

(http://s7.postimg.org/udkwbacp7/imprec.jpg)

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!


Título: Re: Necesito una pista con programa packeado/protegido
Publicado por: tincopasan en 1 Abril 2013, 23:48 pm
bueno, lo bajé y miré un poco, para empezar te diré que no me da el oep que tú encontraste, el mío es D185CB (va), por o tanto ya iriamos distinto. No sé que método usaste para llegar al oep, pero el que usé fue por medio de la api GetmoduleHandleW, cuando por lo general usan GetModuleHandleA. y lo del error que mencionas es por lo general porque está mal la dirección del oep y de la sección code data.En fin soy un perro para explicar https://mega.co.nz/#!rIdUEDpa!BP_b3BbFHUIIINqTCc5yp121IPgZpuOeOOnMFShfkqo
ahí está desempacado, probalo y cualquier cosa me contas.


Título: Re: Necesito una pista con programa packeado/protegido
Publicado por: Relgadon en 2 Abril 2013, 19:51 pm
La verdad te agradezco muchísimo, me diste una muy buena info.

Lo que quiero igual es aprender con esto. Ahora me pongo a buscar info sobre como encontrar el OEP por medio de GetModuleHandleW / GetModuleHandleA   que la verdad no lo conozco ni se como es. Si alguien tiene un lugar sobre donde aprender eso por favor pasenmelo sino no importa uso nuestro amigo Google.

Me encantaría si me pudieras decir (u otra persona del foro) porqué decidiste usar este método. Yo traceando y usando el metodo de las excepciones o el bp en esp no llegue a ningún lado. Además, el olly por alguna razon en la sección del OEP que encontraste me analiza cualquier pavada y para "ver bien" el OEP tengo que sacarle el analisis de codigo.


Denuevo tincopasan: Muchas Gracias!!
Saludos.


Título: Re: Necesito una pista con programa packeado/protegido
Publicado por: tincopasan en 2 Abril 2013, 20:24 pm
hay muchos tutes en la página de Ricardo Narvaja, en lo personal me sirvó este de Solid:  http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1101-1200/1111-Asprotect%202.1%20-%202.2%20SKE%20-%20peleando%20contra%20el%20mutante_por%20Solid.rar     en realidad es al único que le entiendo cuando explica. Verás que para los programas compilados en delphi se usa comúnmente este método. Opté por GetModuleHandleW porqué primero probé con GetModuleHandleA y no funcionó, pero mirando las api que usa el soft está la que me llevó al oep. En cuanto a como muestra olly el código es también comúm, nuchas veces hay que quitar el análisis para ver ver de "otra" forma el código.