일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- pytest
- ida
- Python
- Ransomware
- data distribution
- MySQL
- svn update
- NumPy Unicode Error
- Injection
- javascript
- commandline
- Rat
- hex-rays
- idapython
- idb2pat
- ida pro
- error fix
- ecma
- h5py.File
- x64
- malware
- debugging
- Analysis
- error
- why error
- mock.patch
- open office xml
- idapro
- TensorFlow
- 포인터 매핑
- Today
- Total
13 Security Lab
Windows 부모프로세스가 생성하는 자식프로세스 디버깅 따라가기 본문
Windows How to Debug Child Process ?
윈도우즈에서 자식프로세스를 디버깅하기 위해서는 디버거로 자식프로세스로 따라가주어야 한다.
WinDbg의 경우에는 별도의 설정 없이 이것이 가능하지만, OllyDbg, x64Dbg에서는 Child Process 생성 후 Pending 하고 디버거 Attach 하고 디버깅을 진행하게 된다.
그럼 왜 이런 차이가 발생할까?
WinDbg (The Windows Debugger)
WinDbg 에서 디버깅 할때 자식프로세스를 CreateProcess 하게될 때 인자로 Debug flag 를 함께넘긴다. docs.microsoft.com/ko-kr/windows/win32/procthread/process-creation-flags?redirectedfrom=MSDN
DEBUG_PROCESS 0x00000001
The calling thread starts and debugs the new process and all child processes created by the new process. It can receive all related debug events using the WaitForDebugEvent function.
A process that uses DEBUG_PROCESS becomes the root of a debugging chain. This continues until another process in the chain is created with DEBUG_PROCESS.
If this flag is combined with DEBUG_ONLY_THIS_PROCESS, the caller debugs only the new process, not any child processes.
x64Dbg
An open-source x64/x32 debugger for windows
그에 반해 다른 디버거는 CreateProcess 할 때 debug flag가 인자로 넘어가지 않는다.
찾아보니 x64Dbg 에서 기본옵션으로 child process 디버깅 을 붙이는 옵션을 제공하지 않았다.
그러면 Windbg 를 써야할까 ? 대안은 플러그인을 쓰는것이다.
Actually child process debugging isn't supported directly, but through a plugin by DbgChild
관련 플러그인 github.com/David-Reguera-Garcia-Dreg/DbgChild
DbgChild는 자식 프로세스를 디버깅하기위한 standalone 도구입니다 (auto attach). DbgChild는 디버거 플러그인과 함께 사용할 수 있습니다. 현재 DbgChild는 x86 / x64 x64dbg 디버거용 플러그인을 지원합니다.