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.rar (http://rapidshare.com/files/270308109/Headshot.rar)
Muchas gracias disculpen las molestias.
Pues eso no es UPX. La verdad no se que es, pero UPX no es...
Saludos!
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.
No,no. Eso tampoco es armadillo.
No estoy seguro, pero puede ser alguna variante del UPX, tipo UPX$hit, o algo parecido...
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
UPX SHIT? xD ;D
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.
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
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
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
Ojo porque en AVG me reporta que el adjunto tiene el virut.Z Aver si estais desempacando el virus.
Si alguien quiere más info aqui se analiza el bicho:
http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1101-1200/1120-Jugando%20con%20Virut.NBK.7z (http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1101-1200/1120-Jugando%20con%20Virut.NBK.7z)
Gracias por echarle un ojo. Yo probé con el ollydump en ese oep, luego lo fixee pero al ejecutarlo me tiraba un error de que el archivo había sido modificado. ¿Igual hace un CRC check?