首页
社区
课程
招聘
Unpacking Re-Crypt v0.741
发表于: 2005-5-2 15:18 4634

Unpacking Re-Crypt v0.741

2005-5-2 15:18
4634
谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
?                                ?Uvod ?                                  ?
滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁

  Pozdrav!

  Evo opet sam odlucio da vas malo davim sa jos jednim tutorijalom.

  Dakle, svi vec verovatno znate da sam napisao tutorijal za RC v0.15.

  Danas se bavimo najnovijom verzijom (barem mislim da jeste).

  Da vidimo sta nam donosi nova verzija:

  0.741 *Fixed a 9x bug in the anti-SI and anti-Tracer code.
        *Added some more IAT protections.
        *Encryted all the ascii strings.
        *Loader destroys itself to prevent reversing it.
        *Changed the method of retrieving Kernel32 base (thanks Black-Eye).
        *Added some anti-SI code.
        *Added some code to defeat generic unpackers.

  Dakle ovde vidimo da cemo morati rucno da popravljamo IAT, posto postoji
  neka vrsta redirekcije API poziva.

  Pa dobro, sta se tu moze ;)
  
谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
?                                ?Alati ?                                 ?
滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁

?OllyDbg v1.10 + OllyDump
?ImpRec v1.6 FiNAL

谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
?                              ?Reversing ?                               ?
滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁

  Ucitavamo pakovani .exe u OllyDbg i nalazimo se ovde:
  
  00408000 >  60              PUSHAD
  00408001    E8 00000000     CALL    packed.00408006
  00408006    5D              POP     EBP
  00408007    81ED F31D4000   SUB     EBP, packed.00401DF3
  0040800D    B9 7B090000     MOV     ECX, 97B
  00408012    8DBD 3B1E4000   LEA     EDI, DWORD PTR SS:[EBP+401E3B]
  00408018    8BF7            MOV     ESI, EDI
  
  Postavimo breakpoint na .code sekciju .exe-a i pritisnemo Shift+F9. Bicemo
  ovde:
  
  004086CD    8B17            MOV     EDX, DWORD PTR DS:[EDI]
  004086CF    81F2 13151415   XOR     EDX, 15141513
  004086D5    8917            MOV     DWORD PTR DS:[EDI], EDX
  004086D7    83C7 04         ADD     EDI, 4
  004086DA    83C0 FC         ADD     EAX, -4
  004086DD  ^ EB E9           JMP     SHORT packed.004086C8
  004086DF    C9              LEAVE
  004086E0    C2 0400         RETN    4
  
  Postavimo breakpoint na RETN i pritisnemo F9. Izvrsite RETN i bicete ovde:
  
  00408312    E8 01000000     CALL    packed.00408318
  00408317    6A 8B           PUSH    -75
  00408319    75 68           JNZ     SHORT packed.00408383
  0040831B    8B5D 3C         MOV     EBX, DWORD PTR SS:[EBP+3C]
  0040831E    03F3            ADD     ESI, EBX
  00408320    33C0            XOR     EAX, EAX
  00408322    50              PUSH    EAX
  
  Sada ponovo postavimo breakpoint na .code sekciju naseg programa i ponovo
  pritisnemo Shift+F9 i bicemo ovde:
  
  00401416      55            DB      55                               ;  CHAR 'U'
  00401417      8B            DB      8B
  00401418      EC            DB      EC
  00401419      6A            DB      6A                               ;  CHAR 'j'
  0040141A      FF            DB      FF
  0040141B      68            DB      68                               ;  CHAR 'h'
  0040141C      E0            DB      E0
  0040141D      50            DB      50                               ;  CHAR 'P'
  0040141E      40            DB      40                               ;  CHAR '@'
  
  Analiziramo kod sa Ctrl+F9 i gledamo u ovaj kod:
  
  00401416   .  55            PUSH    EBP
  00401417   .  8BEC          MOV     EBP, ESP
  00401419   .  6A FF         PUSH    -1
  0040141B   .  68 E0504000   PUSH    packed.004050E0
  00401420   .  68 0C204000   PUSH    packed.0040200C                  ;  SE handler installation
  00401425   .  64:A1 0000000>MOV     EAX, DWORD PTR FS:[0]
  0040142B   .  50            PUSH    EAX
  0040142C   .  64:8925 00000>MOV     DWORD PTR FS:[0], ESP
  
  Da, izgleda kao standardan C++ program.
  
  Dampujemo proces BEZ opcije za IAT rebuilding. To cemo morati da uradimo
  rucno :)
  
  Dakle, sada otvaramo ImpRec i izaberemo nas proces. U polje OEP unesemo
  gornji OEP i kliknemo na IAT AutoSearch pa Get Imports.
  
  Sada kliknemo na Show Invalid i ImpRec nam javlja sledece:
  
  Current imports:
  0 (decimal:0) valid module(s)
  35 (decimal:53) imported function(s). (added: +35 (decimal:+53))
  (1A (decimal:26) unresolved pointer(s)) (added: +1A (decimal:+26))
  
  Dakle, imamo 26 invalid importa. Divno :)
  
  Da vidimo kako bi mogli da popravimo te lose importe.
  
  U ImpRecu, izaberemo bilo koji los import i kliknemo desnim tasterom misa
  na njega pa izaberemo Dissasemble / HEX View. Ja sam izabrao prvi los
  import iz liste:
  
  00173517    68 F294E677     PUSH    kernel32.GetEnvironmentStringsA
  0017351C  ^ E9 CFFFFFFF     JMP     001734F0
  
  Haha, pa ova IAT redirekcija uopste nije teska. Prvi los Import je:
  
  GetEnvironmentStringsA
  
  Sada dupli klik levim tasterom misa na taj los import i izaberemo DLL koji
  ima taj API a to je kernel32.dll. U drugoj listi se nalaze svi API-ji koje
  kernel32.dll exportuje. Pronadjite GetEnvironmentStringsA i dupli klik na
  taj API.
  
  Hehe, jedan manje los import :)
  
  Ponavljajte gornji postupak dok ne popravite sve importe.
  
  Sacuvajte novi IAT u dump fajl i to je to :)

谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
?                             ?Zavrsne reci ?                             ?
滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁

  Dakle, ovde se srecemo sa jednim nadasve poucnim protektorom. Na ovom
  primeru mozete lako da naucite osnove unpacking-a kao i IAT Rebuilding-a :)
  
  Toliko od mene za ovaj tutorijal !
  
  KEEP UP THE GOOD WORK AND CRACK ON !
  
  Over and out!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//