07.02.2015 Views

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!