Nico
February 24th, 2008, 22:27
Well, if they think a driver can prevent people from debugging their app, they are rather naive.
I tried to pack a file using their PE eagle whatever, and this file won't run if the driver isn't installed etc.
Then i fired up my debugger, run the file in my packer sandbox (i removed some of the info). Then scripted a little unpacker, and i managed to dump the protected
file and to rebuild it, so it was working without problems, no more protector, imports reconstucted.
So i just hope the Trial version is limited

which i sort of doubt, seeing how long it tooks to protect a simple file..
But their hooking didn't affect my debugger.. i could find the entry point of their files too without problems.. then i didn't bother trying to unpack them, since they prolly use the lib which replaces the libc to their own functions.. i don't have time to bother with this, but i wanted to test if the packer is debugger proof, and it's clearly not.
I can debug the file easily.
Now, this packer is based heavily on Yoda's source, if you look at the last exception handler :
.eagle:0101748D
.eagle:0101748D public start
.eagle:0101748D start proc near
.eagle:0101748D
.eagle:0101748D arg_8 = dword ptr 10h
.eagle:0101748D
.eagle:0101748D push ebp
.eagle:0101748E mov ebp, esp
.eagle:01017490 push edi
.eagle:01017491 db 36h
.eagle:01017491 mov eax, [ebp+arg_8]
.eagle:01017495 db 3Eh
.eagle:01017495 mov edi, [eax+0C4h]
.eagle:0101749C db 3Eh
.eagle:0101749C push dword ptr [edi]
.eagle:0101749F xor edi, edi
.eagle:010174A1 pop dword ptr fs:[edi]
.eagle:010174A4 db 3Eh
.eagle:010174A4 add dword ptr [eax+0C4h], 8
.eagle:010174AC db 3Eh
.eagle:010174AC mov edi, [eax+0A4h]
.eagle:010174B3 rol edi, 7
.eagle:010174B6 db 3Eh
.eagle:010174B6 mov [eax+0B8h], edi
.eagle:010174BD mov eax, 0
.eagle:010174C2 pop edi
.eagle:010174C3 leave
.eagle:010174C4 retn
.eagle:010174C4 start endp
You clearly recognize original Yoda cryptor code.. seeing the number of exceptions, it's prolly based on Yoda protector.
They didn't even change the ROL value, nor the register used for that.. C'mon!
Here is a little trace from my debugger:
Packer SandBox
-------------------------------------------
Exception number: 1
Exception at EIP: 7FC06
SEH handler at: 101488E
Exception Code: C0000005
-------------------------------------------
EAX: FFFFFFFF
EBX: FFFFFFFF
ECX: 1014881
EDX: 7C9137D8
ESI: 0
EDI: 0
EIP: 7FC06
ESP: 7FBE8
EFLAGS: 10246
-------------------------------------------
Exception number: 2
Exception at EIP: 7F82C
SEH handler at: 101489B
Exception Code: C0000096
-------------------------------------------
EAX: 1
EBX: 1
ECX: 101488E
EDX: 7C9137D8
ESI: 0
EDI: 0
EIP: 7F82C
ESP: 7F810
EFLAGS: 10202
-------------------------------------------
Exception number: 3
Exception at EIP: 7F45E
SEH handler at: 10148A8
Exception Code: C0000005
-------------------------------------------
EAX: F9
EBX: 1
ECX: 101489B
EDX: 7C9137D8
ESI: 0
EDI: 0
EIP: 7F45E
ESP: 7F440
EFLAGS: 10246
-------------------------------------------
Exception number: 4
Exception at EIP: 7F086
SEH handler at: 10148F0
Exception Code: C0000005
-------------------------------------------
EAX: 0
EBX: 0
ECX: 10148A8
EDX: 7C9137D8
ESI: 0
EDI: 0
EIP: 7F086
ESP: 7F064
EFLAGS: 10246
-------------------------------------------
Exception number: 5
Exception at EIP: 1017731
SEH handler at: 101748D
Exception Code: C0000005
-------------------------------------------
EAX: 0
EBX: 3A0200E7
ECX: 10159D5
EDX: 10159EC
ESI: 1016DFF
EDI: 1016F11
EIP: 1017731
ESP: 7EBAC
EFLAGS: 10246