Einzelnen Beitrag anzeigen

Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Luckies "myIsDebuggerPresent" liefert immer tr

  Alt 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;
  Mit Zitat antworten Zitat