이 영역을 누르면 첫 페이지로 이동
웬디의 기묘한 이야기 블로그의 첫 페이지로 이동

웬디의 기묘한 이야기

페이지 맨 위로 올라가기

웬디의 기묘한 이야기

C/C++ Windows Hooking 개발자의 블로그 입니다! 이곳은 개발 외에도 저의 취미들이 공유되는 기묘한 이야기가 펼쳐집니다.

[WinDbg] DriverEntry부터 디버깅 시작하기

  • 2016.01.10 17:32
  • ⌨ DEVELOPMENT/Debugging
반응형

break point

디버깅이 준비가 되었으면 이제 시작해야겠죠

에러가 난 덤프 파일이 있을수 있지만 아직 준비단계이기에 단축키 및 간단한 명령어등을 이용해서 WinDbg와 친해지도록 하겠습니다.

디버깅은 오류가 났을때에 덤프를 통해서 분석을 하기도 하고 Kernel live debugging을 하기 위해서도 사용할 수 있습니다.


오늘의 디버깅 방법은 driver가 load되는 시점에 bp를 걸어서 원하는 함수를 디버깅 하는 방법을 해보겠습니다.


사용되는 단축키는

F8 (step in - 함수 진입시 안으로 들어갈 때)

F9 (현재 cursor break point)

F10 (step over - 함수 안으로 진입하지 않고 다음 스텝으로 진행)

Ctrl + Break (동작중 break point)


사용되는 명령어

sxe av (set exception break when access violation)

sxe ld module (set exception break when [module] load

sxe ud module (set exception break when [module] unload

bp (break point address)

bl (break point list)

bc (break point clear)

lm (load module list)

g (go)

start

driver를 load하기 전 다음과 같이 load 시점에 exception을 걸어둡니다.


kd> sxe ld hacker_n0te.sys

kd> g



driver load시 다음과 같이 break point가 잡힐 것 입니다. (int 3은 어셈블리에서 break point 를 나타냅니다.)


nt!DebugService2+0x5:

fffff800`751d58e5 cc              int     3

kd> lm

start             end                 module name

fffff800`00000000 fffff800`0005f000   volmgrx    (deferred)             

fffff800`0005f000 fffff800`00076000   vsock      (deferred)             

fffff800`00084000 fffff800`000ea000   mcupdate_GenuineIntel   (deferred)             

fffff800`000ea000 fffff800`000f8000   werkernel   (deferred)

...

fffff800`0234f000 fffff800`02357000   hacker_n0te   (deferred)

...



load된 module list에 내가 작성한 module이 올라온것을 확인했으면 bp를 걸면 됩니다.


kd> bp hacker_n0te!DriverEntry

kd> g


위와 같이 DriverEntry를 bp로 잡아주어도 되고, 직접 작성한 function등을 잡아도 됩니다.


break point의 목록은 bl 명령어로 확인 가능하며

break point를 제거하기 위해선 bc * 혹은 bc [frame number] 등의 명령어를 사용할 수 있습니다.


다음 스크린샷에서 Disassembly 창을 보시면 DriverEntry function에서 break point가 걸린것을 확인하실 수 있습니다.

마찬가지로 bp 를 이용하여 module!function으로 원하는 함수에 bp를 걸고 디버깅이 가능하며,

F8, F9, F10 키를 이용하여 스텝단위로 디버깅을 할 수 있습니다.


또한 소스코드가 있는경우엔 Symbol 연결시 자동으로 로드 되니 더욱 편리하게 디버깅이 가능합니다.





반응형
저작자표시 비영리 동일조건 (새창열림)

'⌨ DEVELOPMENT > Debugging' 카테고리의 다른 글

dump 분석을 위한 windbg 64bit 다운로드 및 설치  (0) 2019.08.04
[Debugging] 프로세스 크래시 발생시 덤프 남기기  (0) 2016.01.22
[Assembly] 디버깅을 위한 8086 어셈블리  (0) 2016.01.17
[WinDbg] 특정 프로세스 디버깅하기  (0) 2016.01.13
[windows] 윈도우 64bit Driver 서명없이 로드하기  (2) 2016.01.10
[WinDbg] vmware에 WinDbg 연결하여 디버깅 준비하기  (0) 2016.01.06
[WinDbg] Kernel Debugging을 위한 디버거 다운로드 및 설치!  (0) 2016.01.05
visual studio 디버깅시 디스어셈블리 확인하기  (0) 2015.12.31

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Assembly] 디버깅을 위한 8086 어셈블리

    [Assembly] 디버깅을 위한 8086 어셈블리

    2016.01.17
  • [WinDbg] 특정 프로세스 디버깅하기

    [WinDbg] 특정 프로세스 디버깅하기

    2016.01.13
  • [windows] 윈도우 64bit Driver 서명없이 로드하기

    [windows] 윈도우 64bit Driver 서명없이 로드하기

    2016.01.10
  • [WinDbg] vmware에 WinDbg 연결하여 디버깅 준비하기

    [WinDbg] vmware에 WinDbg 연결하여 디버깅 준비하기

    2016.01.06
다른 글 더 둘러보기

정보

웬디의 기묘한 이야기 블로그의 첫 페이지로 이동

웬디의 기묘한 이야기

  • 웬디의 기묘한 이야기의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 이야기

카테고리

  • 분류 전체보기 (204)
    • MY STORY (2)
    • 📸 WALKING WITH YOU (85)
      • 아이슬란드 신혼여행 이야기 (14)
      • 대한민국 구석구석 (62)
      • CONTAX N1 + T* 28-80mm (4)
      • SAMSUNG NX3000 (1)
      • 어느 멋진 날 (4)
    • ⌨ DEVELOPMENT (80)
      • BOOK:Review (1)
      • AI (13)
      • C++ (26)
      • Python (10)
      • WIndows Hooking (9)
      • Windows Kernel (3)
      • Design Pattern (3)
      • Debugging (9)
      • Tools (0)
      • Project (1)
      • Android (1)
      • 상업용 무료폰트 (4)
    • OS (4)
      • News (0)
      • Windows 일반 (4)
    • 모바일 (2)
      • 모바일 게임 (2)
    • 멘사 퍼즐 (9)
    • 생활 꿀 TIP (7)
      • 건강 (3)
      • 일상 (2)
    • 물생활 (8)
      • 골든볼 라미네지 롱핀 (8)
    • IT 기기 (2)
    • BLOG (4)
      • TISTORY BLOG TIP (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 해외여행
  • 아이슬란드
  • windbg
  • c++
  • c
  • 카페
  • 신혼여행
  • AI

나의 외부 링크

  • kernel undocument api
  • 지구 관찰자의 일기
  • 지구와 지구곰

정보

WENDYS의 웬디의 기묘한 이야기

웬디의 기묘한 이야기

WENDYS

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © WENDYS. Designed by Fraccino.

티스토리툴바