Author Topic: unPEcompactME  (Read 311 times)

llAmElliK

  • [TiME4CRiME]
  • Administrator
  • VIP
  • *****
  • Posts: 960
unPEcompactME
« on: November 30, 2005, 12:42:36 PM »
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.

Code: [Select]
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:

 
Code: [Select]
0040100D    64:8925 00000000        MOV DWORD PTR FS:[0],ESP

teď se soustřeďte na registry - jediný aktivní je ESP:

Code: [Select]
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.

 
Code: [Select]
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.

Code: [Select]
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

Code: [Select]
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
« Last Edit: November 30, 2005, 12:48:45 PM by llAmElliK »
TiME AND CRiME ARE ETERNAL-REVERSE ENGINEERiNG iS MODERN PHiLOSOPHY AND iSN'T CRiME
[TiME4CRiME]