Zwei "debugger detections": Wie genau nutzen?
-
Hi!
Vorneweg, ich hab so gut wie keine Ahnung von ASM
Nun, ich habe zwei Codes gefunden, welche erkennen sollen, ob ein Prozess debugged wird (Ich verwende eigentlich C++ aber inline-asm im Visual Studio):__asm { push offset _seh push fs:[0] mov fs:[0], esp int 2dh nop pop fs:[0] add esp, 4 ; debugger detected _seh: ; debugger not detected }
__asm { push offset not_debugged push fs:[0] mov fs:[0], esp push 1234h ;invalid handle call CloseHandle ; debugger detected not_debugged: }
Beim ersten Code habe ich das Problem, dass wenn kein Debugger entdeckt wird, das Programm sofort schließt. Ich denke, ich muss die Exception abfangen, aber wie?
Beim zweiten Code ist das Problem, dass wenn kein Debugger entdeckt wird, das Programm sofort schließt und wenn ein Debugger entdeckt wird, das Programm bei der nächsten Anweisung nach dem asm-Block crasht mit "Unhandled exception: Privileged instruction" (Wobei das vielleicht gewollt ist, keine Ahnung, aber ohne Debugger soll es weiterlaufen).
Könnt ihr mir Tipps geben, wie ich diese beiden Methoden richtig nutze?
Wäre sehr dankbar!
-