Hi,
včera mně Iron Screw po?ádal o unpack jednoho targetu packovaného v PECompact 2.x -> Jeremy Collake (byla to poslední verze 2.66).
Verzi 2.64 u? jsem předtím dělal a měl jsem na to jeden tutoriál - tak jsem doufal ?e to bude podobné,ne-li to samé - no a očekávání se splnilo - nevím proč se vůbec takový packery dělaj (snad jen kvůli skvělému kompresnímu poměru).
Tak jsem mu popsal manual unpack - jemu to v?ak ne?lo - tak jsem se rozhodl ?e to tady trochu popí?u na svém unpackme (máte v attach) - je to velmi jednoduché tak si to uká?em a zkuste si to máte-li chuť.
Postup Manual Unpack v Olly
nastartujte target do OllyDbg - ve kterém máte v Options - Exceptions zatr?eno pouze první polo?ku Ignore AV. - odpovězte NE - a stojíme zde.
00401000 > B8 1CCE4700 MOV EAX,unPEcomp.0047CE1C <------- START
00401005 50 PUSH EAX
00401006 64:FF35 00000000 PUSH DWORD PTR FS:[0]
0040100D 64:8925 00000000 MOV DWORD PTR FS:[0],ESP
00401014 33C0 XOR EAX,EAX
00401016 8908 MOV DWORD PTR DS:[EAX],ECX
00401018 50 PUSH EAX
00401019 45 INC EBP
0040101A 43 INC EBX
0040101B 6F OUTS DX,DWORD PTR ES:[EDI]
0040101C 6D INS DWORD PTR ES:[EDI],DX
0040101D 70 61 JO SHORT unPEcomp.00401080
Tak teď pomocí F8 dojděte na adresu sem:
0040100D 64:8925 00000000 MOV DWORD PTR FS:[0],ESP
teď se soustřeďte na registry - jediný aktivní je ESP:
EAX 0047CE1C unPEcomp.0047CE1C
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFBC <-------- To nás zajímá - DUMP
EBP 0012FFF0
ESI 00000001
EDI 00572F50
EIP 0040100D unPEcomp.0040100D
C 0 ES 0023 32bit 0(FFFFFFFF)
P 1 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 0 DS 0023 32bit 0(FFFFFFFF)
S 1 FS 0038 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
Klikněte na něj my?í a pak pravým tlačítkem dejte Follow in Dump - tak se nahlídněte do HEX výpisu - zajímjí nás první 4 bajty - tyto.
0012FFBC E0 FF 12 00 <--- zatrhněte tyto
Klikněte na zatr?ené bajty a dejte HW Breakpoint on Access DWORD - tak teď pomocí SHIFT+F9 - 4 X a? stojíte zde - funkce zatím je skok na OEP.
0047CEE8 5D POP EBP <----- zde stojíme
0047CEE9 FFE0 JMP NEAR EAX <----- skok na OEP
0047CEEB D4 44 AAM 44
0047CEED 46 INC ESI
0047CEEE 0000 ADD BYTE PTR DS:[EAX],AL
0047CEF0 20CF AND BH,CL
0047CEF2 47 INC EDI
0047CEF3 0030 ADD BYTE PTR DS:[EAX],DH
Tak teď pomocí F8 přejeďte JMP a stojíme na OEP
004644D4 55 PUSH EBP <------ OEP
004644D5 8BEC MOV EBP,ESP
004644D7 83C4 F0 ADD ESP,-10
004644DA B8 E4424600 MOV EAX,unPEcomp.004642E4
004644DF E8 8417FAFF CALL unPEcomp.00405C68
004644E4 A1 0C694600 MOV EAX,DWORD PTR DS:[46690C]
004644E9 8B00 MOV EAX,DWORD PTR DS:[EAX]
004644EB E8 10B2FEFF CALL unPEcomp.0044F700
Tak a je to - dejte Plugin - Dump - mějte zatr?ený Rebuild IAT a dumpněte - target je Unpacked a funkční - sem říkal EASY - na přilo?eným targetu si to mů?ete zkusit - full verze Pecompact potom TOOLs/FTP.
Enjoy