해당 카테고리는 개인적으로 강의를 보며 요약한 노트입니다.

이전 노트

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

'Windbg' 카테고리의 다른 글

2. Different Modes Of Operations of Windbg  (0) 2019.03.10
Windbg. Network Kernel Debugging  (0) 2019.03.10
1. THE Debugger  (0) 2019.03.10

+ Recent posts