본문 바로가기
리버싱

WinDBG 명령어 정리

by dladbru 2018. 2. 5.

 

 

 

windbg.exe
다운로드

 

WinDbg:10.0.15063.468 AMD64 버전으로 WDK 같은거 설치할 시간이 없는 PC일경우 단일 파일로 실행가능하다.

 

 

Symbol 설정법

메뉴 [File] - [Symbol File Path] 에서

srv*E:\WebSymbols*http://msdl.microsoft.com/download/symbols 를 입력하고 Reload에 체크한다.

 

 

심볼이 저장될 경로는 적절히 수정하면 되고, Reload에 체크하지 못했다면 디버깅할 때 .reload 명령어를 입력함

( 드라이버를 올렸는데도  lm k 인가 lm m으로 보이지 않을 경우 .reload 하고 난후에는 잘댐 )

 

 

명령어

 

lm

로딩된 모듈 보여줌

 

ln [Address]

특정 주소가 어느 심볼에 속하는지

 

dt [Struct] [Address]

특정 메모리의 데이터를 지정된 형식에 맞춰서 보여줌

ex) dt _TEB 7efdb000

ex) dt _EThread _KThread _kporcess 등등 다해~ 하고싶은거~~

 

bp [Address]

브레이크 포인트 걸기

 

bl

브레이크 포인트 정보

 

bc [BP Number]

브레이크 포인트 번호로 브포 삭제

 

dps

특정 메모리의 값을 심볼과 비교해서 보여줌. IAT, SSDT를 볼 때 주로 사용됨

ex) dps Address LSize/4

ex) dps 00400000+1000 L10E/4

 

!dh [ImageBase or ModuleName]

PE 정보

 

!dlls

로드된 DLL 정보

 

!handle

핸들 정보

 
메모리 파일덤프

.dump /f d:\crash.dmp

Creating d:\crash.dmp - mini user dump

Dump successfully written


메모리 패치

 

e*

eb 0x12345 90

ew 0x12345 9090 9090

ed 0x12345 90909090

 

메모리 보기
d* 명령들을 이용하면 된다.

db : Byte 형식 + Ascii 로 표시
dd : 데이터를 4Byte 형식으로 표시

db 8053db18



디스어셈블리(Disassembly)
u 주소 를 이용하면 된다. 특정 함수를 디스어셈블리 하고 싶으면 uf 주소 를 하면 된다.

u 주소 : 주소에서 일부분만 디스어셈블리
u 주소1 주소2 : 주소1에서 주소 2까지 디스어셈블리

lkd> u 8053db18 or uf nt!NtOpenProcess
nt!KeInitializeProfile:
8053db18 8bff mov edi,edi
8053db1a 55 push ebp
8053db1b 8bec mov ebp,esp

 

 

메모리 영역 속성 보기(VA Dump)
!vadump 명령을 사용하면 된다. 만약 특정 메모리의 속성을 보고 싶다면 !vprot 주소 명령을 사용하면 된다.

0:000> !vadump
BaseAddress: 00000000
RegionSize: 00010000
State: 00010000 MEM_FREE
Protect: 00000001 PAGE_NOACCESS

BaseAddress: 00010000
RegionSize: 00001000
State: 00001000 MEM_COMMIT
Protect: 00000004 PAGE_READWRITE
Type: 00020000 MEM_PRIVATE

 

0:000> !vprot 30c191c
BaseAddress: 030c1000
AllocationBase: 030c0000
AllocationProtect: 00000080 PAGE_EXECUTE_WRITECOPY
RegionSize: 00011000
State: 00001000 MEM_COMMIT
Protect: 00000010 PAGE_EXECUTE
Type: 01000000 MEM_IMAGE

 

 

반응형

댓글