Wykrywanie debuggera (SoftICE)
ice^^
Aby wykryc sterownik debuggera systemowego:
mov ah,43h
int 68h
cmp eax,0F386h
jz mamy_debugger
Metoda ta nie dziala w przypadku zastosowania latek typu IceDump, FrogsICE.
Troche trudniejsza do wykrycia int 41h:
xor ax,ax
mov es,ax
mov bx, cs
lea dx, int41handler
xchg dx, es:[41h*4]
xchg bx, es:[41h*4+2]
in al, 40h
xor cx,cx
int 41h
xchg dx, es:[41h*4]
xchg bx, es:[41h*4+2]
cmp cl,al
jnz si_jest
int41handler PROC
mov cl,al
iret
int41handler ENDP
akarame: a po co tak komplikowac z if'ami ? Nie wystarczy:
Result := DebugHook > 0;
? ;)
A nie możne ręcznie zmienić flagi pracy krokowej?
ja się do końca nie znam, ale jeżeli się da to w ten sposób można zablokować debuger...
Mozesz nie wlaczyc programu, bo est debugger :]
A debugger (np. SoftICE) sluzy do crackowania programu...
O to inny sposób:
function IsDebugger: boolean;
begin
if (DebugHook > 0) then
begin
Result := true;
end
else
Result := false;
(*
DebugHook: Byte platform = 0; { 1 to notify debugger of non-Delphi exceptions
>1 to notify debugger of exception unwinding }
*)
end;