Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Luckies "myIsDebuggerPresent" liefert immer tr

  Alt 6. Apr 2010, 18:23
Nein, der Code ist ursprünglich von Oliver.

@DJ-SPM: Wenn du schon nur kopierst, dann bitte auch richtig. Dein Code:
Delphi-Quellcode:
function MyIsDebuggerPresent: Boolean; assembler;
var
  BeingDebugged: Boolean;
begin
  asm
   push eax;
   push ebx;
   mov eax, fs:[$18];
   mov ebx, [eax+$30];
   mov eax, [ebx+2];
   mov [BeingDebugged], al;
   pop ebx;
   pop eax; // Wichtig! POP immer in umgekehrter Reihenfolge von PUSH
  end;
end;
Mein Code:
Delphi-Quellcode:
function MyIsDebuggerPresent: Boolean; assembler;
asm
  mov eax, fs:[$18];
  mov eax, [eax+$30];
  movzx eax, byte ptr [eax+2];
end;
Du hast da alles durcheinander geworfen, was man durcheinander werfen kann. Bei dir wird das Ergebnis in der Variablen BeingDebugged abgelegt. Da sie aber lokal ist, ist deren Inhalt nach Verlassen der Funktion ungültig.

Die globale Variable BeingDebvuggt wird nur benötigt, wenn man den ASM-Code nicht in eine Funktion packt, sondern "nackt" in den Code kopiert, damit man keine verdächtigen Funktionsaufrufe hat.

Also lese den Artikel noch mal sorgfältig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat