Autor
|
Tema: Algun maestro para desempaquetar UPX[RARO] (Leído 6,819 veces)
|
broly7
Desconectado
Mensajes: 11
|
Es alguien capaz de desempaquetar este archivo comprimido con "Creo" Upx? El PEID me dice esto: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo Y lo raro es que en vez de tener las cabecera UPX0 y UPX1, tiene UPX1 y UPX1. Y si ya probé con el "upx -d Drunken.exe" Necesito hablar con algún tio bueno con el Olly. Drunken.rarMuchas gracias disculpen las molestias.
|
|
« Última modificación: 30 Agosto 2009, 17:00 pm por broly7 »
|
En línea
|
|
|
|
MCKSys Argentina
|
Pues eso no es UPX. La verdad no se que es, pero UPX no es...
Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
broly7
Desconectado
Mensajes: 11
|
Y alguien pudiera encontrar el método con el que se empaqueto? O simplemente desempaquetarlo poniendo un tuto si quiere.
Gracias.
PD: Tengo una corazonada de armadillo.
|
|
« Última modificación: 29 Agosto 2009, 02:05 am por broly7 »
|
En línea
|
|
|
|
MCKSys Argentina
|
No,no. Eso tampoco es armadillo.
No estoy seguro, pero puede ser alguna variante del UPX, tipo UPX$hit, o algo parecido...
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
tena
Desconectado
Mensajes: 668
|
le meti un pequeño vistaso, no mucho pero para comenzar esta bien. Si es medio raro y tiene trucos antidebugs.
Por ejemplo no se ejecuta si tenemos el olly abierto. Otra es que instala un SEH y ahi controla si tenemos algun HBP
No me queda mas tiempo, es todo lo que vi, otro dia sera
slds
|
|
|
En línea
|
|
|
|
broly7
Desconectado
Mensajes: 11
|
UPX SHIT? xD Osea que el cabroncete está bien pensado para el olly, por eso no podía desempaquetarlo con algunos métodos. Igual karmany sabe algo del asunto, a ver si conseguimos encontrarle el OEP.
|
|
|
En línea
|
|
|
|
tena
Desconectado
Mensajes: 668
|
Bueno..
Al iniciar el oly pones el byte de isdebug a cero, D EBX+2 y lo pones a cero, o con algun plugin tilda IsDebuggerPresent.
Das run y Luego de instalar el manejador y caera en el, entonces con esto nos detecta si tenemos algun hbp puesto
004DA5B3 8378 04 00 CMP DWORD PTR DS:[EAX+4],0 004DA5B7 74 11 JE SHORT Drunken.004DA5CA ; verifika los HBP 004DA5B9 C740 04 0000000>MOV DWORD PTR DS:[EAX+4],0 004DA5C0 C786 634B0000 0>MOV DWORD PTR DS:[ESI+4B63],1 004DA5CA 8378 08 00 CMP DWORD PTR DS:[EAX+8],0 004DA5CE 74 11 JE SHORT Drunken.004DA5E1 004DA5D0 C740 08 0000000>MOV DWORD PTR DS:[EAX+8],0 004DA5D7 C786 634B0000 0>MOV DWORD PTR DS:[ESI+4B63],1 004DA5E1 8378 0C 00 CMP DWORD PTR DS:[EAX+C],0 004DA5E5 74 11 JE SHORT Drunken.004DA5F8 004DA5E7 C740 0C 0000000>MOV DWORD PTR DS:[EAX+C],0 004DA5EE C786 634B0000 0>MOV DWORD PTR DS:[ESI+4B63],1 004DA5F8 8378 10 00 CMP DWORD PTR DS:[EAX+10],0 004DA5FC 74 11 JE SHORT Drunken.004DA60F
todos deben saltar, segun llos hbps que tengas, entonces inviertes el flag z.
despues nos quiere detectar con CheckRemoteDebuggerPresent
004DBFF0 50 PUSH EAX ; push offset isdebugged 004DBFF1 6A FF PUSH -1 ; push -1 004DBFF3 FF95 354B0000 CALL DWORD PTR SS:[EBP+4B35] ; LLAMA a CheckRemoteDebuggerPresent
hace follow in dump en eax, y pasa la llamada, despues cambia el 1 que te pone por un cero.
luego tambien usa FindWindowA para ver si esta el olly, como estoy usando el parcheado 4, a mi no me lo detecta.
seguimos un poquito mas y usa GetForegroundWindow y GetWindowTextA para obtener el texto del titulo, los xorea y opbtiene un resultado que si es igual nos manda afuera, para evitarlo yo inverti el flag z del salto 004DC08D JNZ SHORT Drunken.004DC092
con esos tres cambios ya anda, IsdebuggerPresent, CheckRemoteDebuggerPresent y el ultimo.
Ademas se fija si esta instalado el Sice.
Ahora a buscar el oep Slds
|
|
|
En línea
|
|
|
|
tena
Desconectado
Mensajes: 668
|
Aunque no estoy seguro para mi este es el oep 00410579 .>CALL Drunken.004169CA 0041057E .>JMP Drunken.00410399
luego la iat esta toda destruida
00423000 00A3162C 00423004 00A31642 00423008 00A31658 0042300C 00A3166E 00423010 00A31684 00423014 00A3169A 00423018 00A316B0 0042301C 00A316C6 00423020 00A316DC 00423024 00000000 00423028 00A31382 0042302C 00A31398 00423030 00A313AE 00423034 00A313C4 00423038 00A313DA 0042303C 00A313F0 00423040 00A31406 00423044 00A3141C
hay que arreglarla
slds
|
|
|
En línea
|
|
|
|
karmany
|
Le he echado un vistazo y pienso lo mismo que Tena. OEP = 00410579 Compilador = Visual C++ La IAT está destruída y está en una sección que ha creado en ejecución. Es muy curioso cómo llama a las funciones... Es muy fácil saber cuál es cada API pero repararla requiere tiempo.. Voy a probar si ImportRe tiene algún plugin o puede trazarlo adecuadamente. Edit. Para hacerlo todo rápidamente habrá que programar un plugin para ImportRe porque a mano es lento.(son muchas). Las funciones son llamadas así: 00A9163E 0000 add byte ptr ds:[eax],al 00A91640 0000 add byte ptr ds:[eax],al 00A91642 50 push eax 00A91643 60 pushad 00A91644 B8 03010000 mov eax,103 00A91649 68 10B24805 push 548B210 00A9164E - FF25 82CF4D00 jmp near dword ptr ds:[4DCF82] ; Copia_de.004DB88E
|
|
« Última modificación: 30 Agosto 2009, 21:31 pm por karmany »
|
En línea
|
|
|
|
|
|
|