
Debugger, der Stealth-Hooks einsetzt, um sich der Debugger-Erkennung zu entziehen
GhostDebug ist ein Windows-x64-Debugger-Prototyp, der aus einer nativen Debugging-DLL und einem .NET-Framework-Befehlszeilenclient besteht. Er ist für das Debugging von Zielen gedacht, die Debugger-Erkennungsprüfungen verwenden.
Hintergrundinformationen zum Design finden Sie unter Entwicklung eines unerkannten Debuggers unter Windows.
Erstellen Sie alle Projekte in Visual Studio.
Starten Sie den Zielprozess. TestTarget ist als einfaches Beispiel enthalten.
Öffnen Sie ein Terminal in GhostDebug/GhostDebug-CLI/bin/Release/ und starten Sie die CLI:
.\GhostDebug.exe
Hängen Sie sich über die Prozess-ID oder den Prozessnamen an, und verwenden Sie dann die interaktiven Befehle:
attach <pid/process name>
An einen Prozess anhängen.
bp <address>
Einen Breakpoint setzen.
bp <address> <command list>
Einen Breakpoint mit Befehlen setzen, die beim Auslösen automatisch ausgeführt werden.
cl <address>
Einen Breakpoint löschen.
g
Ausführung fortsetzen.
t
Einzelnen Befehl ausführen (Step Into).
rw <register> <value>
Einen Wert in eine Warteschlange stellen, der vor dem Fortsetzen in ein Register geschrieben wird.
help
Die Befehlsliste anzeigen.
Adressen können absolut, relativ zum Hauptmodul (+1234), relativ zu einem anderen Modul (ntdll+1234) oder durch ein Symbol (!function oder kernel32!ExitProcess) angegeben sein. Breakpoints können auch Befehle automatisch ausführen, zum Beispiel bp 1234 rw rax 0;g.
Die CLI muss aus dem Verzeichnis ausgeführt werden, das ghostdebug-core.dll enthält, und das Ziel sowie die CLI sollten dieselbe Architektur (x64) verwenden.