2. 윈도우 디버거 환경을 준비하자

2021. 4. 20. 01:29·SW개발/Windows Device Driver
목차
  1. WinDBG
  2. 고려 사항
  3. 실습
반응형

2. 윈도우 디버거 환경을 준비하자

  • 하제소프트 대표이사 이봉석님의 윈도우 드라이버 연대기 강의를 보고 기록한 내용이다.

WinDBG

  • MS Windows의 다용도 디버거이다.

  • 유저 모드 애플리케이션 뿐만 아니라 장치 드라이버나 커널 모드에서 운영체제 자체를 디버깅할 수도 있다.

  • GUI가 있으며 VS 디버거보다 강력하다.

  • 덤프 파일을 통해 디버깅할 수 있다.

고려 사항

  • 타겟 컴퓨터(가상 머신)의 부트 설정을 변경해야 한다.

    • 디버깅이 가능하도록 부트설정을 변경한다.

      • 가상 머신의 실행 창에서 msconfig 입력 후, 부팅 탭에서 고급 옵션에 들어간다.

      • 전역 디버그 설정에서 디버그 포트를 COM1, 전송 속도를 115200으로 맞추고 확인을 누른다.

      • 종료하지 않고 TESTSIGNING 모드 설정을 진행한다.

    • TESTSIGNING 모드 설정

      • 윈도우에서 드라이버가 작동하려면 MS로부터 인증을 받아야 하는데, 테스트 환경으로 부팅하면 이러한 인증 절차가 생략된다.

      • CMD를 관리자 권한으로 실행 후, 아래 명령어를 입력한다.

        bcdedit /set testsigning on
      • 완료되면 가상 머신을 종료한다.

  • 호스트 컴퓨터에서도 설정해야 하는게 두 가지 있다.

    • 디버깅할 타겟 컴퓨터와 연결할 방법을 결정한다. (가상 시리얼 포트)

      • VirtualBox 가상 머신의 설정에서 직렬 포트 탭에 들어간다.

        • 직렬 포트 사용에 체크하고, 포트 번호를 위에서 설정한 포트 번호와 맞춰준다.

        • 포트 모드를 Host Pipe로 설정하고, Connect to existing pipe/socket을 체크 해제한다.

        • 아래의 Path/Address에 다음과 같이 입력한다.

          \\.\pipe\com1

      • WinDbg(x64)에서 포트를 설정해야 한다.

        • File - Kernel Debug (Ctrl + K) 클릭 후 COM 탭으로 이동한다.

        • Pipe와 Reconnect에 체크하고 포트를 아래와 같이 작성한다.

    • 타겟 컴퓨터의 운영체제 심볼을 자동으로 받도록 설정한다.

      • C:\sym\websym 폴더를 생성한다.

      • WinDbg의 File - Symbol File Path를 클릭하고 아래 내용을 작성한다.

        C:\sym;
      • 우측의 Help를 클릭하여 Search 탭에 web symbol을 검색한다.

        • Microsoft public symbol server를 클릭하면 다음과 같이 나온다.

          The Microsoft symbol server makes Windows debugger symbols publicly available.
          
          You can refer directly to the public symbol server in your symbol path in the following manner:
          
          set _NT_SYMBOL_PATH=srv*DownstreamStore*https://msdl.microsoft.com/download/symbols
        • srv 이하 내용을 복사하여 아까의 세미콜론 뒤에 붙여넣고, DownstreamStore을 지우고 C:\sym\websym을 작성한다.

          C:\sym;srv*C:\sym\websym*https://msdl.microsoft.com/download/symbols
      • 설정을 저장하기 위해 File - SaveWorkspace를 클릭한다.

실습

  • 위의 과정을 모두 마치고나서 가상 머신을 작동시키면, WinDbg에서 커맨드 창이 열리고 다음과 같이 뜨는 것을 볼 수 있다.

    Microsoft (R) Windows Debugger Version 10.0.19041.685 AMD64
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    Opened \\.\pipe\com1
    Waiting to reconnect...
    Connected to Windows 10 19041 x64 target at (Sun Apr 18 21:01:11.597 2021 (UTC + 9:00)), ptr64 TRUE
    Kernel Debugger connection established.
    
    ************* Path validation summary **************
    Response                         Time (ms)     Location
    OK                                             C:\sym
    Deferred                                       srv*C:\sym\websym*https://msdl.microsoft.com/download/symbols
    Symbol search path is: C:\sym;srv*C:\sym\websym*https://msdl.microsoft.com/download/symbols
    Executable search path is: 
    Windows 10 Kernel Version 19041 MP (1 procs) Free x64
    Built by: 19041.1.amd64fre.vb_release.191206-1406
    Machine Name:
    Kernel base = 0xfffff801`37800000 PsLoadedModuleList = 0xfffff801`3842a3b0
    System Uptime: 0 days 0:00:00.000
    KDTARGET: Refreshing KD connection
    Capacity:25500, FullChargedCapacity:50000, Voltage:10000, Rate:0
  • 메뉴 탭의 Break를 클릭하면, 가상 머신을 멈출 수 있고 커맨드 창에 다음 내용이 출력된다.

    Break instruction exception - code 80000003 (first chance)
    *******************************************************************************
    *                                                                             *
    *   You are seeing this message because you pressed either                    *
    *       CTRL+C (if you run console kernel debugger) or,                       *
    *       CTRL+BREAK (if you run GUI kernel debugger),                          *
    *   on your debugger machine's keyboard.                                      *
    *                                                                             *
    *                   THIS IS NOT A BUG OR A SYSTEM CRASH                       *
    *                                                                             *
    * If you did not intend to break into the debugger, press the "g" key, then   *
    * press the "Enter" key now.  This message might immediately reappear.  If it *
    * does, press "g" and "Enter" again.                                          *
    *                                                                             *
    *******************************************************************************
    nt!DbgBreakPointWithStatus:
    fffff801`37bfd0b0 cc              int     3
    • 다시 Go 버튼을 누를 때까지 가상 머신이 멈춘 상태로 유지된다.
반응형
저작자표시 (새창열림)

'SW개발 > Windows Device Driver' 카테고리의 다른 글

06. 프로그램 실행 제어  (0) 2021.04.25
05. 5편 구조체분석1 (DRIVER_OBJECT, UNICODE_STRING)  (0) 2021.04.25
4. 프로세스 강제 종료 방지 연습  (0) 2021.04.20
3. 간단한 드라이버와 디버깅  (0) 2021.04.20
1. 윈도우 드라이버 개발 환경 준비  (0) 2021.04.20
  1. WinDBG
  2. 고려 사항
  3. 실습
'SW개발/Windows Device Driver' 카테고리의 다른 글
  • 05. 5편 구조체분석1 (DRIVER_OBJECT, UNICODE_STRING)
  • 4. 프로세스 강제 종료 방지 연습
  • 3. 간단한 드라이버와 디버깅
  • 1. 윈도우 드라이버 개발 환경 준비
Caniro
Caniro
MinimalismCaniro 님의 블로그입니다.
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 전체보기 (319)
      • SW개발 (268)
        • Java Spring (6)
        • C++ (186)
        • Python (21)
        • Linux (16)
        • 알고리즘 (13)
        • Git (4)
        • Embedded (1)
        • Raspberrypi (9)
        • React (3)
        • Web (2)
        • Windows Device Driver (6)
      • IT(개발아님) (46)
        • Windows (26)
        • MacOS (7)
        • Utility (11)
      • 챗봇 짬통 (0)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dism
    백기선
    Workspace
    스프링 프레임워크 핵심 기술
    Solaris 10
    EXCLUDE
    SFC
    알림
    unix
    로지텍 마우스 제스처
    제외
    windows
    시스템 복구
    스프링
    KakaoTalk
    맥북 카카오톡 알림 안뜸
    Windows 11
    vscode
    spring
    MacOS
    윈도우 명령어
    SunOS 5.1
    그림판
    윈도우
    logi options
    java
    citrix workspace
    mspaint
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
2. 윈도우 디버거 환경을 준비하자

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.