The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
vrednost koju sadrzi EAX posle dodavanja heksadecimalne vrednosti na nju<br />
je nas Computer ID koji je u mom slucaju jednak 88A7B7A8. Ova vrednost<br />
se pre nego sto se vratimo iz ovog CALLa pretvara u string pomocu CALLa na<br />
adresi 0040179A i smesta se na adresu 004031C4. Konacno kada se posle<br />
izvrsenja RET komande vratimo iz ovog CALa mozemo da predjemo na<br />
analizu sledeceg CALLa na adresi 0040137A koji predstavlja citanje/proveru<br />
sadrzaja Registryja. Analiziracemo taj CALL da bismo videli kako to Registry<br />
utice na registraciju programa. Najzanimljiviji deo ovog CALLa je sledeci deo:<br />
00401660 |. 50 PUSH EAX ; /pHandle<br />
00401661 |. 6A 01 PUSH 1 ; |Access = KEY_QUERY_VALUE<br />
00401663 |. 6A 00 PUSH 0 ; |Reserved = 0<br />
00401665 |. FF75 0C PUSH DWORD [EBP+C] Subkey = "S<strong>of</strong>tware\DFCG Crackme"<br />
00401668 |. 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER<br />
0040166D |. E8 B8020000 CALL <br />
a on nam otkriva sve sto nam treba da bismo savladali ovu Registry zastitu.<br />
Odavde znamo da je potrebno da u Registryju postoji kljuc pod glavnom<br />
granom HKEY_CURRENT_USER koji se zove DFCG Crackme a koji se nalazi<br />
pod kljucem S<strong>of</strong>tware. Dakle cela putanja do kljuca koji je potrebno da<br />
postoji je HKEY_CURRENT_USER\S<strong>of</strong>tware\DFCG Crackme. Ali ovo je samo<br />
registry kljuc, on sam po sebi ne sadrzi nikakvu vrednost. Organizacija<br />
Windows Registryja je takva da se kljucevi ponasaju kao folderi, a vrednosti<br />
u njima kao fajlovi. Kao i u Windowsu tako i u Registryju “fajlovi” mogu biti<br />
razlicitih tipova, gde je osnovni tip “fajla” string tip. Jedni problem je sto ne<br />
znamo ime “fajla”, ali ovo cemo otkriti cim napravimo kljuc DFCG Crackme,<br />
jer ce nasa meta onda doci dovde:<br />
0040167F |. FF75 14 PUSH DWORD PTR SS:[EBP+14] ; /pBufSize<br />
00401682 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Buffer<br />
00401685 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; |<br />
00401688 |. 50 PUSH EAX ; |pValueType<br />
00401689 |. 6A 00 PUSH 0 ; |Reserved = NULL<br />
0040168B |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; |ValueName = "Regkey"<br />
0040168E |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; |hKey<br />
00401691 |. E8 9A020000 CALL <br />
Iz ovoga je jasno da je ime “fajla” Regkey stoga cemo dodati value nasem<br />
kljucu sa imenom Regkey i vrednoscu 111111. To bi trebalo da izgleda isto<br />
kao na sledecoj slici:<br />
A ovo je i poslednja stvar koju moramo da uradimo kako bi se ovaj CALL<br />
uspesno izvrsio, dodeljujuci ALu vrednost 1, odnosno dozvoljavajuci<br />
sledecem CALLu da se izvrsi:<br />
0040137F . 84C0<br />
TEST AL,AL<br />
00401381 . 74 44 JE SHORT Crackme3.004013C7<br />
00401383 . E8 91000000 CALL Crackme3.00401419<br />
Uci cemo u njega klikom na F7 i analiziracemo kod koji vidimo. Odmah<br />
primecujemo vrednost koju smo uneli u registry, kao i njeno prosledjivanje<br />
sledecem CALLu:<br />
0040141C |. 68 3D314000 PUSH Crackme3.0040313D ; ASCII "111111"<br />
00401421 |. E8 7A040000 CALL Crackme3.004018A0<br />
00401426 |. 3C 00 CMP AL,0<br />
00401428 |. 74 26 JE SHORT Crackme3.00401450<br />
<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 85 <strong>of</strong> 293