
Depurador que utiliza hooks sigilosos para ocultarse de la detección de depuradores
GhostDebug es un prototipo de depurador para Windows x64 compuesto por una DLL de depuración nativa y un cliente de línea de comandos de .NET Framework. Está pensado para depurar objetivos que utilizan comprobaciones de detección de depuradores.
Para conocer los antecedentes del diseño, consulte Developing an undetected debugger on Windows.
Compile todos los proyectos en Visual Studio.
Inicie el proceso objetivo. TestTarget se incluye como un ejemplo sencillo.
Abra una terminal en GhostDebug/GhostDebug-CLI/bin/Release/ e inicie la CLI:
.\GhostDebug.exe
Conéctese mediante el ID de proceso o el nombre del proceso y, a continuación, use los comandos interactivos:
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.
Las direcciones pueden ser absolutas, relativas al módulo principal (+1234), relativas a otro módulo (ntdll+1234) o especificadas por símbolo (!function o kernel32!ExitProcess). Los puntos de interrupción también pueden ejecutar comandos automáticamente, por ejemplo bp 1234 rw rax 0;g.
La CLI debe ejecutarse desde el directorio que contiene ghostdebug-core.dll, y el objetivo y la CLI deben usar la misma arquitectura (x64).