해당 카테고리는 개인적으로 강의를 보며 요약한 노트입니다.
이전 노트
2019/03/10 - [Windbg] - 1. THE Debugger
Introduction to Windbg Series 1 Part 2 - Different Modes Of Operations of Windbg
Modes
User mode live debugging
사용자 모드 라이브 디버깅
- starting with debugger
디버거로 시작하기
- attaching a debugger
디버거 연결
Live Kernel mode debugging (most powerful mode. Other modes are more of less subset of this)
라이브 커널 모드 디버깅 (가장 강력한 모드. 다른 모드는 이보다 다소 부분적입니다.)
- Need 2 machines.
2개의 머신 필요
- Target can be a Virtual machine.
VM 이 타겟이 될 수 있다.
Dump analysis
덤프 분석
- user dump
사용자 덤프
- complete dump / kernel dump
완전한 덤프(풀 덤프) / 커널 덤프
Open a binary
32Bit
64Bit
wow 64 modes. User Mode / Kernel mode..
메모장을 실행해 놓은 상태에서 상단의 File - Attach to a Process
notepad.exe 선택 후 OK
다음과 같이 결과 확인 - 이것을 User live debugging 이라고 부릅니다.
이번에는 상단의 File - Executable
Windows 경로로 이동하여 notepad 열기
다음과 같이 Open 됨
g 명령어를 실행하면
*BUSY* Debuggee is running 메세지가 나타나며, Notepad 가 실행됩니다.
상단의 Break 를 클릭하면
Break 되면서
Notepad가 비활성 상태 - 즉 편집 및 종료할 수 없는 상태가 됩니다.
다음은 Live Kernel Debugging
Network 를 통해서 kernel Debugging 방법은 아래의 글에서 다루었으니 참고하시기 바랍니다.
2019/03/10 - [Windbg] - Windbg. Network Kernel Debugging
Network Kernel 로 연결한 뒤, break 를 하면 왼쪽하단의 kd - 커널로 연결되어 있음을 알 수 있습니다.
Crash dump
File - Open Crash Dump
생성되었거나 생성된 Dump open
Ntfs.sys 때문에 발생되었다고 예상
좌측하단의 kd 로 나타나는 것을 알 수 있으며, 이를 통해서 커널 덤프임을 알 수 있음.
open a binary
Windbg 를 관리자 권한으로 실행
Open -Crash Dump
파일 유형을 Aljl Files로 바꾼 뒤, System32 경로에서 ntoskrnl 파일은 Open 합니다.
다음과 같이 확인됨
lmvm ntoskrnl
아래와 같이 확인
uf ntoskrnl!keAttachProcess
아래와 같이 확인
How debugger does all these magic?
Working of a Debugger
- Handle certain interrupts which are normally ignored or suppressed by the OS (eg. trap flag)
OS에 의해 일반적으로 무시되거나 억압되는 특정 인터럽트를 처리합니다
- Take control of some of the interrupt handlers once KD is attached and broken.
KD가 연결되고 끊어지면 인터럽트 핸들러 중 일부를 제어한다.
- Read / write access to memory and CPU registers of the program/OS which is being debugged.
디버깅중인 프로그램 / OS의 메모리 및 CPU 레지스터에 대한 읽기 / 쓰기 액세스.
- Advanced hardware assistance (debug registers in X86) for some special functionalities like break on access etc.
액세스 중단 등과 같은 일부 특수 기능을 위한 고급 하드웨어 지원 (X86의 디버그 레지스터)
- User mode debugger works slightly different but similar principle
사용자 모드 디버거는 약간 다른 원리이지만 비슷한 원리를 사용합니다.
- Dumps are read like a file and debugger is as good as a notepad in that case. Reading a file, process and display output based on that. Dump analysis is a "one instance" special case of live debugging.
덤프는 파일처럼 읽히고 디버거는 메모장만큼 좋다. 파일을 읽고, 이를 바탕으로 출력을 처리하고 표시합니다. 덤프 분석은 라이브 디버깅의 "한 인스턴스" 특별한 경우입니다.
- Compiler, linker, loader or OS in general work together with debugger to get the debugging experience right.
컴파일러, 링커, 로더 또는 OS는 일반적으로 디버거와 함께 작동하여 디버깅 환경을 올바르게 구현합니다.
- We will discuss some of the working and internals of basic debugging operation like breakpoint, attaching (user mode) and other operations of debugger in better detail in later presentations.
브레이크 포인트, 사용자 모드 연결 및 기타 디버거 작동과 같은 기본 디버깅 작업의 작업 및 내부 내용 중 일부는 이후 프레젠테이션에서 자세히 설명합니다.
- Debugger has a core engine which does more of the above mentioned operations to which lot of UI and extensions attached.
디버거에는 앞서 언급 한 작업 중 많은 부분에 UI 및 확장이 첨부 된 코어 엔진이 있습니다.
Summary
- Modes
- Working
'MS 기타제품&Tool > Windbg' 카테고리의 다른 글
5. Introduction to debugger Commands (0) | 2019.04.07 |
---|---|
4. Troubleshooting Symbols mismatch (0) | 2019.04.07 |
3. Introduction To debug Symbols (0) | 2019.04.07 |
Windbg. Network Kernel Debugging (0) | 2019.03.10 |
1. THE Debugger (0) | 2019.03.10 |