-
-
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!
? ?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!
赞赏
他的文章
- [转帖]用多媒体学Visual C++ 2008 系统学习VC 2008必备教程 7940
- [下载]新壳 OSP软件平台功能说明 5754
- [讨论]微点不识英文?! 6187
- [推荐]内存清零KILL进程 16140
看原图
赞赏
雪币:
留言: