디버깅 가능한 환경이 6가지 있다.
- WinDbg Preview
- Windows Debugger (WinDbg)
- Kernel Debugger (KD)
- NTKD
- Console Debugger (CDB)
- NT Symbolic Debugger (NTSD)
WinDbg Preview
WinDbg Preview는 현대적인 비주얼, 빠른 윈도우, 본격적인 스크립팅 경험, 확장 가능한 디버거 데이터 모델 전면 및 중앙으로 구축된 WinDbg의 마지막 버전이다.
WinDbg Preview는 WinDbg와 동일한 기본 엔진을 사용하므로 익숙한 모든 명령, 확장 및 워크플로는 이전과 동일하게 작동한다.
더 많은 정보는 Debugging Using WinDbg Preview 에서 보면된다.
WinDbg
WinDbg는 유저모드, 커널모드 디버깅에 유능한 윈도우 베이스 디버거이다. WinDbg는 윈도우 커널, 커널모드 드라이버, 시스템 서비스, 유저모드 프로그램 그리고 드라이버를 위한 디버깅을 제공한다.
WinDbg는 소스 레벨 디버깅을 위해 Visual Studio debug를 사용한다.
그것은 PDB 심볼 파일을 가지고 있는 모듈로부터 어떤 심볼 또는 변수에 접근 가능하고,
COFF 심볼 파일로 컴파일된 모듈에 의해 노출된 공용 함수 이름에 접근 가능하다. (Windows .dbg 파일과 같은)
WinDbg는 소스코드 보기, 중단점 설정, 변수 보기(C++ 개체 포함), 스택 추적 및 메모리를 수행할 수 있다.
디버거 명령창을 통해 사용자는 다양한 명령을 실행할 수 있다.
커널모드 디버깅의 경우, WinDbg에는 일반적으로 두 대의 컴퓨터가 필요하다.(호스트, 대상 컴퓨터)
WinDbg는 유저모드와 커널모드 대상을 위해 여러 원격 디버깅 옵션을 제공한다.
WinDbg는 CDB/NTSD 및 KD/NTKD에 대응하는 그래픽 인터페이스이다.
KD
DK는 모든 NT기반 운영체제에서 커널 모드 활동을 심층 분석할 수 있는 문자기반 콘솔 프로그램이다.
사용자는 KD를 컴포넌트와 드라이버 커널 모드 디버그 또는 운영체제 자체의 동작을 모니터링하는데 사용할 수 있다.
KD는 다중 프로세서 디버깅도 지원한다.
일반적으로, KD는 디버깅중인 컴퓨터에서 실행되지 않는다. 커널모드 디버깅을 위해서는 두 대의 컴퓨터가 필요하다.
NTKD
NTKD라는 KD 디버거의 변형이 있다. NTKD는 시작될 때 새 텍스트 창을 생성하는 반면 KD는 호출된 명령 프롬프트 창을 상속한다는 점을 제외하면, 모든면에서 KD와 동일하다.
CDB
Microsoft Console Debugger (CDB)는 유저모드 메모리 및 구성에 대한 로우레벨 분석이 가능한 문자기반 콘솔 프로그램이다. 콘솔 디버거라는 이름은 CDB가 콘솔 응용 프로그램으로 분류된다는 사실을 나타내는데 사용된다.
CDB가 콘솔이라고 대상 응용 프로그램이 콘솔 프로그램이어야 함을 의미하지 않는다.
실제로 CDB는 콘솔, 그래픽 윈도우 프로그램을 모두 디버깅하는데 유능하다.
CDB는 현재 실행 중이거나 최근에 충돌한 프로그램(실시간 분석)을 디버깅하는데 매우 강력하고 설정이 간단하다.
작동중인 애플리케이션의 동작을 조사하는데 사용할 수 있다.
응용 프로그램에 오류가 있는 경우 CDB를 사용하여 스택 추적을 얻거나 유죄 매개 변수를 볼 수 있다.
문자기반이므로 네트워크(원격 액세스 서버 사용)에서 잘 작동한다.
CDB를 사용하면 프로그램 코드를 표시 및 실행하고, 중단점을 설정하고, 메모리의 값을 검사하고 변경할 수 있다.
CDB는 바이너리 코드를 분해하고 어셈블리 지침을 표시하여 분석할 수 있다.
그것은 또한 소스코드를 직접 분석할 수도 있다.
CDB는 주소나 전역 기호를 통해 메모리 위치에 액세스할 수 있고, 주소가 아닌 이름으로 데이터와 지침을 참조할 수 있으므로 코드의 특정 섹션을 쉽게 찾고 디버그할 수 있다.
CDB는 다중 스레드 및 프로세스 디버깅을 지원한다. 그것은 확장 가능하며 페이징된 메모리와 페이징되지않은 메모리를 모두 읽고 쓸 수 있다.
대상 응용 프로그램 자체가 콘솔 응용 프로그램인 경우, 대상은 CDB와 콘솔 창을 공유한다.
대상 콘솔 응용 프로그램에 대해 별도의 콘솔 창을 생성하려면 -2 명령 줄 옵션을 사용한다.
NTSD
다음은 Microsoft NT Symbolic Debugger (NTSD)라는 CDB 디버거의 변형이다.
그것은 시작될 때 새 텍스트 창을 생성하는 반면 CDB는 호출된 명령 프롬프트 창을 상속한다는점을 제외하면 모든면에서 CDB와 동일하다.
시작 명령을 사용하여 새 콘솔 창을 생성할 수도 있으므로 다음 두 구성은 동일한 결과를 제공한다.
start cdb parameters
ntsd parameters
커널 디버거 (Visual Studi, WinDbg 또는 KD)에서 제어할 수 있도록 NTSD(또는 CDB)의 입력 및 출력을 리다이렉션할 수 있다. 이 기술을 NTSD와 함께 사용하면 콘솔 창이 전혀 나타나지 않는다.
따라서 커널 디버거에서 NTSD를 제어하면 대상 응용 프로그램이 포함된 컴퓨터에 거의 부담을 주지않는 매우 가벼운 디버거가 생성되므로 특히 유용하다.
이 조합을 사용하여 시스템 프로세스를 디버그하고 종료하고 이후 부팅 단계를 수행할 수 있다.
디테일한 유저모드, 커널모드 디버깅은 Controlling the User-Mode Debugger from the Kernel Debugger에 참고!
'리버싱 > 윈도우 리버싱' 카테고리의 다른 글
RVA와 섹션 (0) | 2021.01.21 |
---|---|
PE 파일의 전체 구조 (0) | 2021.01.21 |
PE 파일 (0) | 2021.01.17 |
WinDbg, mona세팅 (구/신 버전 다 있음) (0) | 2021.01.01 |
WinDbg Preview (0) | 2020.12.31 |