Registriert seit: 10. Aug 2007
609 Beiträge
FreePascal / Lazarus
|
Re: Luckies "myIsDebuggerPresent" liefert immer tr
6. Apr 2010, 14:00
Hmmm, schade, d.h. es gibt für mich immer noch nichts verständliches / modifizierbares.
Hier noch einmal ein paar Alternativen die ich mir einmal notiert und getestet habe:
Die meisten Funktionen scheinen relativ gleich zu sein. Soweit ich weiß, sind alle Codes von brechi
Delphi-Quellcode:
function IsDebuggerPresent1: Boolean; stdcall;
asm
MOV EAX, DWORD PTR FS:[$30]
TEST EAX, EAX
JS @@W9X
@@WNT:
MOV ECX, FS:[$18]
MOV ECX, DWORD PTR [ECX+$30]
XOR EAX, EAX
MOV AL, BYTE PTR [ECX+2]
RET
@@W9X:
MOV EAX, DWORD PTR [$BFFC9CE4]
MOV ECX, DWORD PTR [EAX]
CMP DWORD PTR DWORD PTR [ECX+$54], 1
SBB EAX, EAX
INC EAX
RET
end;
function isDebuggerPresent2: Boolean; stdcall;
asm
MOV EAX, DWORD PTR FS:[$30]
TEST EAX, EAX
JS @@W9X
@@WNT:
MOV EAX, FS:[$18]
MOV EAX, [EAX+$30]
MOVZX EAX, [EAX+2]
RET
@@W9X:
MOV EAX, [$BFFC9CE4]
MOV ECX, [EAX]
CMP DWORD PTR [ECX+$54], 1
SBB EAX, EAX
INC EAX
RET
end;
function IsDebuggerPresent3: Boolean; stdcall;
asm
MOV EAX, FS:[$18]
MOV EAX, [EAX+$30]
//MOVZX EAX, [EAX+2]
DB $0F, $B6, $40, $02
end;
function isDebuggerPresent4: Boolean; stdcall;
asm
MOV EAX, FS:[030H]
TEST EAX, EAX
JS @@W9X
@@WNT:
MOV EAX, FS:[$18]
MOV EAX, [EAX+$30]
MOVZX EAX, [EAX+2]
RET
@@W9X:
MOV EAX, [$BFFC9CE4]
MOV ECX, [EAX]
CMP [ECX+$54], 00000001
SBB EAX, EAX
INC EAX
RET
end;
{*----------------------------------------------------------------------------------------
Mehrere isDbbgrPresents zusammengefasst, in der Hoffnung das es mehr bringt ;-O
----------------------------------------------------------------------------------------*}
function isDebuggerPresent: Boolean; inline;
begin
Result := IsDebuggerPresent1 or IsDebuggerPresent2 or IsDebuggerPresent3 or IsDebuggerPresent4;
end;
|
|
Zitat
|