[ windbg command 모음집 ] 암기해야 할 명령어들 정리
‘srv*C: \WebSymbols*http://msdl.microsoft.com/download/symbols’
----------------- 일반적인 명령어들 ----------------------
uf == (gdb) disass
bl == breakpoint list
bp == set BreakPoint
bu == set Unresolved Breakpoint (defers the actual setting of the breakpoint until the moudule is loaded)
ba == break on address
bc == breakpoin clear
be, bd == breakpoint enable, disable
k == callstack 을 보여준다 .
lm == load 된 파일과 unload 된 모듈들을 보여준다.
ex) lm vm msvcrt
lmD == -||- ( output in Debugger Markup Language )
dt nt!_TEB //Thread enviroment block 설정들을 보여줌 == !teb
dt nt!_PEB //Process Enviroment Block 설정들을 보여줌 == !peb
ex )dt nt!_PEB -r @$peb // @$peb = address of our process’s PEB (see pseudo-register syntax)
ex2)dt nt!_TEB Addr // full TEB dump
!dlls == dll 정보들을 보여준다.
!dlls -c kernel32 == same as before for kernel32 only ( kernel32 대신 다른것을 써도된다)
ex) !dlls -c msvcrt
!tls == tls 정보들을 보여준다
!mgreloc == relocation 정보를 보여준다.
!dh kernel32 == kernel32 의 헤더정보를 보여준다.
~ == thread statues for all thread
~0 == thread status for thread 0
~. == thread statues for currently active thread
~* == thread status for all threads with some extra info (priority, startAdress)
~*k == call stacks for all thread ~ !uniqstack
~<trehad>s == set current thread
!gle == get last error
? == ' = ' 의미와 비슷하다 결과를 알려줌
ex) ? 00130000 - 0012c0000
result ) evalute expression : 16384 = 00100000
!uniqstack == 모든 thread들에 대한 현재 프로세스의 콜스택을 보여준다.
k == 콜스택을 보여준다
kP == P의 의미는 각 호출되는 함수들의 full 파라미터를 의미함.
kf == f == distance between adjacent frames to be displayed (useful to check stack consumption of each frame
kv == v == display FPO information + calling convention
kb == 각각의 함수들의 처음 3파라미터를 보여준다.
dds == stack trace
------------------------------Memory handling ------------------------------------------------
dd == double word 형태로 보여줌
da == 문자열 형태로 보여줌
du == 유니코드 형태로 보여줌
f == fill memory
dds == words 와 심볼들을 보여준다.
ddp == 참조되는 메모리들을 보여준다.
!address -RegionUsageStack == Dispaly stack regions for all threads in the process
----------------------------- Heap Information ------------------------------------------------
!heap ? == 간단 요약
!heap -h == 범위내의 힙 리스트 나열
!heap -s 0 == summary for all heaps
!heap -p == Gflags settings HeapHandle list
!heap -p -all == Details of all allocations in all heaps in the process
dds == stack trace
-------------------------------------------------------------------------------------------------
!locks == 프로세스 크리티컬 섹션같은 락킹된 리스트를 보여줌 -v 옵션을 주면 모두 출력
!cs [ Opt ] [CsAddr ] == 크리티컬 섹션트리를 보여줌
!avrf -cs == Display a list of deleted critical section
[ Automatic Pseudo -Registers ]
$ra == 스택의 현재 주소를 반환 ex ) g $ra
$ip == Instruction Pointer ( x86 = EIP , itanium=IIP , x64 = RIP )
$exentry == 현재 프로세스의 첫 EP 값
$retreg == 리턴되는 주소를 갖는 값 (EAX, RAX )
$peb == process environment block
$peb == Address of the thread environment block of current Thread
$tpid == Process ID (PID)
$tid == Thread ID(TID)
------------------ Meta or Dot-command 들 ----------------------
.sympath == 심볼 경로들을 보여줌 ( 설정도 가능 )
.cls == 화면 초기화
.lastevent == 방금전 했던 명령어
.detach == process deteach
.if == ??
.reload /f ntdll.dll // ntdll 이 없다고 뜰때 해결
-------------------- 확장 명령어 ------------------------------
!analyze == 심볼정보등 프로세스의 자체 분석내용을 나열해준다.
!address == section 헤더들의 주소들도 알려주고.. 뭔가 더하는것같은데.. 잘모르겠다
!handle == 사용되는 핸들러들을 보여준다.
!peb == PEB 파일을 보여줌.
!ext.help == 일반적인 확장 도움말
!Uext.help == 사용자모드의 확장 ( OS에 특화되지 않은 것 )
!Ntsdexts.help == 사용자모드의 확장( OS에 특화됨 )
!Kdexts.help == kernel-Mode Extensions
!logexts.help == Logger Extensions
!clr10/sos.help == debugging ManagedCode
------------------------------- Symbol 관련 -------------------------------
_NT_SYMBOL_PATH=srv*C:\Symbols\MsSymbols*http://msdl.microsoft.com/download/symbols; //명령어아님
.sympath == 심볼을 보여주거나 셋팅이 가능하게 해줌
.sympath + XY == XY 디렉토리를 심볼 경로에 추가함
!sym noisy == 심볼 검색에 대한 정보를 표시
ld kernel32 == kernel32 dll 을 불러온다.
ld * == 모든 모듈을 위해 심볼을 불러온다.
.reload == 심볼 정보를 모두 재로드한다.
. kernel32!* == kernel32에 대한 자료를 검토한다.
dt ntdll!* == 모든 종류의 ntdll 을 보여준다.
-------------------------------- 소스 관련 -------------------------------
.srcpath == 소스파일을 불러오거나 셋팅할 수 있다.
.srcpath + XY == XY폴더를 소스파일 검색 폴더에 추가한다.
[ heap 메모리 릭 찾기 ]
0:001> !heap -stat -h 0
Allocations statistics for
heap @ 00150000
group-by: TOTSIZE max-display: 20
size #blocks total ( %) (percent of total busy bytes)
100000 101 - 10100000 (99.99) 0x101 * 1MB allocated. Looks like a good candidate for a memory leak.
928 2 - 1250 (0.00)
64 24 - e10 (0.00)
…
0:001> !heap -flt s 100000 get all allocations with size: 100000
_DPH_HEAP_ROOT @ 151000
Freed and decommitted blocks
DPH_HEAP_BLOCK : VirtAddr VirtSize
Busy allocations
DPH_HEAP_BLOCK : UserAddr UserSize - VirtAddr VirtSize
024f0698 : 13831000 00100000 - 13830000 00102000
024f0620 : 13721000 00100000 - 13720000 00102000
… There should be 0x101 entries with size 100000 output here.
Let’s take the first one with UserAddr=0x13831000
0:001> !heap -p -a 13831000
address 13831000 found in
_DPH_HEAP_ROOT @ 151000
in busy allocation ( DPH_HEAP_BLOCK: UserAddr UserSize - VirtAddr VirtSize)
24f0698: 13831000 100000 - 13830000 102000
7c91b298 ntdll!RtlAllocateHeap+0x00000e64
0045b74e TestApp!CMyDlg ::OnBnClicked_DoMemoryLeak+0x0000003e
0040b122 TestApp!_AfxDispatchCmdMsg+0x00000043
0040b32f TestApp!CCmdTarget ::OnCmdMsg+0x00000118
00408838 TestApp!CDialog ::OnCmdMsg+0x0000001b
'FUZZING 공부' 카테고리의 다른 글
[ windbg explotiable ] 를 예측해주는 plugin (0) | 2014.04.27 |
---|---|
[ 파이썬 해킹 프로그래밍] 퍼저 환경 구축하기 pydbg 설치하기 (0) | 2013.09.28 |
[ python 해킹프로그래밍 1.] 윈도우 디버깅 개발 코드 (0) | 2013.01.29 |
퍼징의 종류 설명 (explain of Fuzzing figure) (0) | 2013.01.29 |
fopen()으로 헥사값을 고치기 위한 방법 (0) | 2013.01.29 |