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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Windows check debugger API<br />

Evo jos jednog primera za Delphi programere. Ovaj deo koda je<br />

zasebna funkcija koja se koristi za detekciju bilo kog aktivnog debuggera.<br />

Ova funkcija ce detektovati da li je program startovan uz pomoc nekog<br />

debuggera ili ne. Ovo je bar koliko je meni poznato nedokumentovana API<br />

funkcija. Slucajno sam naisao na nju prilikom reversovanja programa koji je<br />

bio pakovan i zasticen AsProtectom. Posle dosta razmatranja dosao sam do<br />

zakljucka da AsProtect koristi windowsovu API funkciju IsDebuggerPresent<br />

koja se nalazi u kernel32.dll-u koja nema ulaznih parametara a vraca kao<br />

rezultat 1 ili 0 u zavisnosti od toga da li je debugger detektovan. Kada se sve<br />

ovo sroci u jednu Delphi funkciju to izgleda upravo ovako:<br />

function IsDebuggerPresent: Integer; stdcall; external 'kernel32.dll' name<br />

'IsDebuggerPresent';<br />

Kao sto je za SICE objasnjeno reversing ove funkcije se radi veoma<br />

jednostavno. Otvorite isti primer koji smo koristili u proslom delu poglavlja.<br />

Ako postavimo break-point na IsDebuggerPresent pokrenemo program i<br />

pritisnemo dugme Test Debugger API zavrsicemo u kernel32.dll-u a posle<br />

izvrsenja RET komande naci cemo se ovde:<br />

0045229A 8BC0 MOV EAX,EAX<br />

0045229C . E8 F3FFFFFF CALL IsDebuggerPresent

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

Saved successfully!

Ooh no, something went wrong!