
Débogueur utilisant des hooks furtifs pour échapper à la détection des débogueurs
GhostDebug est un prototype de débogueur Windows x64 composé d'une DLL de débogage native et d'un client en ligne de commande .NET Framework. Il est destiné au débogage de cibles qui utilisent des contrôles de détection de débogueur.
Pour le contexte sur la conception, voir Développer un débogueur non détecté sur Windows.
Compilez tous les projets dans Visual Studio.
Démarrez le processus cible. TestTarget est fourni comme exemple simple.
Ouvrez un terminal dans GhostDebug/GhostDebug-CLI/bin/Release/ et lancez le CLI :
.\GhostDebug.exe
Attachez-vous par ID de processus ou par nom de processus, puis utilisez les commandes interactives :
attach <pid/process name>
Attach to a process.
bp <address>
Set a breakpoint.
bp <address> <command list>
Set a breakpoint with commands that are executed automatically when it hits.
cl <address>
Clear a breakpoint.
g
Resume execution.
t
Step into one instruction.
rw <register> <value>
Queue a value to be written to a register before continuing.
help
Display the command help.
Les adresses peuvent être absolues, relatives au module principal (+1234), relatives à un autre module (ntdll+1234), ou spécifiées par symbole (!function ou kernel32!ExitProcess). Les points d'arrêt peuvent également exécuter des commandes automatiquement, par exemple bp 1234 rw rax 0;g.
Le CLI doit être exécuté depuis le répertoire contenant ghostdebug-core.dll, et la cible et le CLI doivent utiliser la même architecture (x64).