El OllyDBg no me deja abrir este exe de 500kb (¿Compressed Code?)

Iniciado por olevlove, 15 Mayo 2010, 21:17 PM

0 Miembros y 2 Visitantes están viendo este tema.

olevlove

El OllyDBg no me deja abrir este exe de 500kb
http://www.megaupload.com/?d=BEA4Z3X9

En pantalla aparece el texto Compressed code?
¿Como puedo este exe descomprimirlo para poder trabajar con el?

Un saludo y de nuevo muchas gracias

apuromafo CLS

#1
El archivo al que está intentando acceder está temporalmente desactivado.
aun no lo veo ..puede que sea en otro formato, como por ejemplo 16 bytes.. y no en 32..intenta analizar con rdg, por si hay algun packer o algo.
puedes abrirlo, lo que no puedes es desempacar del todo., o bien no sabes donde llegar al oep, yo tampoco lo veo facil, pero no creo que sea imposible.

olevlove

#2
No entiendo como desempaquetarlo
¿Puede alguien ayudarme?
¿Que programa necesito para desempaquetarlo ?

http://rapidshare.com/files/387734941/gaifr.rar.html


Muchas gracias de antemano.

apuromafo CLS

pasa que el programa no esta realmente en su propio lenguaje, esta con algo ofuscado, o bien algun packer para iniciar, ahora bien, donde comienza esto?

CPU Disasm
Address   Hex dump          Command                                  Comments
004019A8    E8 00000000     CALL 004019AD
004019AD    58              POP EAX
004019AE    BB AD190000     MOV EBX,19AD
004019B3    2BC3            SUB EAX,EBX
004019B5    50              PUSH EAX
004019B6    68 00004000     PUSH OFFSET gaifr.00400000
004019BB    68 B01C0000     PUSH 1CB0
004019C0    68 80000000     PUSH 80
004019C5    E8 35FFFFFF     CALL 004018FF
004019CA  ^ E9 99FFFFFF     JMP 00401968


si vamos de a poco, va desempacando en memoria, pulsando f7/f8



---------------------------
PMIFRPanel
---------------------------
Run-time error '53':

File not found
---------------------------
Aceptar   
---------------------------
mas o menos desde
CitarCPU Disasm
Address   Hex dump          Command                                  Comments
08E992C6    68 1C22EB08     PUSH 8EB221C                             ; ASCII "RaiseException %s(%x) flags=%x num_args=%x caller_addr=%s:0x%x %s
"
08E992CB    E8 9EA2FDFF     CALL 08E7356E
08E992D0    83C4 20         ADD ESP,20
08E992D3    E8 5FF9FFFF     CALL 08E98C37
08E992D8    84C0            TEST AL,AL
08E992DA    5B              POP EBX
08E992DB    74 09           JE SHORT 08E992E6
08E992DD    FF75 08         PUSH DWORD PTR SS:[EBP+8]
08E992E0    E8 64FDFFFF     CALL 08E99049
08E992E5    59              POP ECX
08E992E6    8B4D 10         MOV ECX,DWORD PTR SS:[EBP+10]
08E992E9    834D FC FF      OR DWORD PTR SS:[EBP-4],FFFFFFFF
08E992ED    85C9            TEST ECX,ECX
08E992EF    74 05           JE SHORT 08E992F6
08E992F1    E8 2F07FFFF     CALL 08E89A25
08E992F6    8B4D F4         MOV ECX,DWORD PTR SS:[EBP-0C]
08E992F9    5F              POP EDI
08E992FA    5E              POP ESI
08E992FB    64:890D 0000000 MOV DWORD PTR FS:[0],ECX
08E99302    C9              LEAVE
08E99303    C2 1800         RETN 18
08E99306    55              PUSH EBP
08E99307    8BEC            MOV EBP,ESP
08E99309    51              PUSH ECX
08E9930A    51              PUSH ECX
08E9930B    896D FC         MOV DWORD PTR SS:[EBP-4],EBP
08E9930E    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
08E99314    8945 F8         MOV DWORD PTR SS:[EBP-8],EAX
08E99317    FF75 14         PUSH DWORD PTR SS:[EBP+14]
08E9931A    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
08E9931D    FF75 10         PUSH DWORD PTR SS:[EBP+10]
08E99320    FF75 0C         PUSH DWORD PTR SS:[EBP+0C]
08E99323    FF75 08         PUSH DWORD PTR SS:[EBP+8]
08E99326    FF70 04         PUSH DWORD PTR DS:[EAX+4]
08E99329    FF75 F8         PUSH DWORD PTR SS:[EBP-8]
08E9932C    E8 C3FEFFFF     CALL 08E991F4
08E99331    FF75 14         PUSH DWORD PTR SS:[EBP+14]
08E99334    FF75 10         PUSH DWORD PTR SS:[EBP+10]
08E99337    FF75 0C         PUSH DWORD PTR SS:[EBP+0C]
08E9933A    FF75 08         PUSH DWORD PTR SS:[EBP+8]
08E9933D    FF15 74B2EA08   CALL DWORD PTR DS:[8EAB274]
08E99343    C9              LEAVE
08E99344    C2 1000         RETN 10

se supone que busca algo..y da eror de runtime

ahora bien el OEP (original entrypoint)
de donde debes desempacar esta en:
CPU Disasm
Address   Hex dump          Command                                  Comments
004070C8    68 10944000     PUSH gaifr.00409410                      ; ASCII "VB5!6&*"
004070CD    E8 EEFFFFFF     CALL <JMP.ThunRTMain>                    ; Jump to MSVBVM60.ThunRTMain


sugiero que leas algo de
http://foro.elhacker.net/ingenieria_inversa/iquesteres_nuevo_en_el_foro_lee_esto-t93855.0.html

igual creo que debe ser mas o menos de esta pagina:
Citarhttp://www.schiratti.com/
creo que mas especificamente de aqui:
Citarhttp://www.projectmagenta.com/downloads/demos.html

revisaba y sip, corresponde a una version 0...+1 de la que tienes , pero parece que debes ademas de depurar, quitar algunas excepciones, no es un tema facil desempacar este tema, sino mas bien encontrar la limitacion,
Cual es la limitacion de este programa?

amm..
cuando te aparece que el programa is compreses, colocas ok,

sip, esta comprimido, no he visto que packer, pero no parece llamar directamente al oep de la aplicacion de vb, sino llama a getcommandline y otras apis para mapear espacio y esas cosas.

ojala alguien del foro tenga mas tiempo que yo..solo lo vi 1 minuto..bajar de un ciber es complicado.

MCKSys Argentina

#4
Bueno, lo estuve mirando un poco y saqué lo siguiente:

Para obtener un desempacado "casi" completo:

1) Abrir el EXE en Olly y en el EP hacer ALT+E para ir al listado de modulos.
2) De la lista seleccionar MSVBVM60.DLL y hacer doble-click para saltar al modulo.
3) Hacer CTRL+G y poner "ThunRTMain" (sin las comillas). En la dirección donde queda Olly, poner un BP con F2.
4)Ejecutar con F9 y cuando para en nuestro BP, colocarse sobre el primer valor de la pila y darle ENTER.
5) De la dirección que aparece en la ventana de CPU, escrolar 2 instrucciones hacia arriba (hasta el PUSH o mejor dicho, hasta 4070C8). Ese es nuestro OEP. Reconocemos que es el OEP de un programa hecho en VB6.
6) Colocar un HBP en esa direccion y hacer CTRL+F9 para reiniciar el programa.
7) Cuando reinicia, hacer ejecutar con F9 y cuando para en el HBP, dumpear con OllyDump y reconstruir IAT con ImpRec.

Ahora, por lo poco que he visto, este EXE tiene algunas "trampas". Por ejemplo, la IAT de un programa hecho en VB6 (como este) sólo tiene llamadas a la DLL MSVBVM60.DLL. Pero este tiene llamadas a GDI32 y OPENGL32. Asi que habrá que analizar porqué estas entradas están así.

Bueno, por lo pronto, ya tienes algo más con lo que poder continuar...

Saludos!

EDITADO

Para obtener un EXE funcional, conviene recontruirlo con LordPE.

Al final, sólo quedará una entrada "mala" en la IAT. Esta entrada apunta a una sección del packer. Fíjate en el dumpeado la función que está en 4F4E90. Esa función llama a esa entrada de la IAT. Además podrás ver cosas "interesantes" en la misma función (como por ej, la cadena ".key" e "lkey15"  ;))

Si analizas esa función, seguro lo sacas....
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


LSL

  :o Lo facil que ven y hacen las cosas los maestros.  ;-)
felicidades MCKSys.

En pocas palabras, un mini manual para quitar packer desconocido de un programa hecho en visual basic.  ;D
Saludos.

LSL.

MCKSys Argentina

#6
Naaaaa, no es tan asi...

La cosa se hace fácil, porque en todo VB6 el OEP es siempre de la misma forma: PUSH y CALL ThunRTMain...

Basta con poner un BP en la función y quedas a 2 pasos del OEP.

Este método es muy conocido y, a la vez, altamente efectivo...  ;D

Aparte Apuromafo hizo la primera aproximación, la cual siempre es la más dificil de las cosas...

Saludos!

MODIFICADO

El packer es Thinstall...
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


LSL

sip, tienes razón, apuromafo (que es otro crack  ;-)) dio el OEP y la aproximación al desempacado y dumpeo, pero me remito a tu facilidad como maesto para explicarnos en 7 sencillos pasos como conseguir el dumpear y reconstruir el VB6. :D

y como sacaste que el packer es Thinstall, ?
Saludos.

LSL.

MCKSys Argentina

En el EXE original, parado en el OEP, ve a la entrada de la IAT que apunta a una sección del packer (la entrada de la IAT apunta a 4EBFB53).

En esa sección, si miras las string references, verás cadenas como: "Thinstall_DllMain(DLL_PROCESS_DETACH) (shutdown for module %x)", "X:\thinstall\stub\ts_stub.cc", etc.

Aparte, en estos casos PEiD detecta bien el packer (porque la signature es vieja :))
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


LSL

gracias mcksys.

mi peid v0.95 no encuentra nada "Nothing found [Overlay]"
voy a tener que buscarle un archivo de signaturas mas completo y actualizado.
Saludos.

LSL.