
디버거 탐지를 피하기 위해 스텔스 후크를 활용하는 디버거
GhostDebug는 네이티브 디버깅 DLL과 .NET Framework 명령줄 클라이언트로 구성된 Windows x64 디버거 프로토타입입니다. 디버거 탐지 검사를 사용하는 대상을 디버깅하기 위한 것입니다.
디자인 배경은 Windows에서 탐지되지 않는 디버거 개발을 참조하세요.
Visual Studio에서 모든 프로젝트를 빌드합니다.
대상 프로세스를 시작합니다. TestTarget은 간단한 예제로 포함되어 있습니다.
GhostDebug/GhostDebug-CLI/bin/Release/에서 터미널을 열고 CLI를 시작합니다:
.\GhostDebug.exe
프로세스 ID 또는 프로세스 이름으로 연결한 다음 대화형 명령을 사용합니다:
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.
주소는 절대 주소, 기본 모듈 기준 상대 주소(+1234), 다른 모듈 기준 상대 주소(ntdll+1234) 또는 기호로 지정(!function 또는 kernel32!ExitProcess)할 수 있습니다. 중단점은 명령을 자동으로 실행할 수도 있습니다(예: bp 1234 rw rax 0;g).
CLI는 ghostdebug-core.dll이 포함된 디렉터리에서 실행해야 하며, 대상과 CLI는 동일한 아키텍처(x64)를 사용해야 합니다.