Windbg是Microsoft公司免费调试器调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。结合Microsoft的Symbol Server,可以获取系统符号文件,便于应用程序和内核的调试。Windbg支持的平台包括X86、IA64、AMD64。
加载符号
.sympath .sympath c:\symbols .sympath+ c:\symbols .reload .reload /f /v .reload /f @"c:\windows\System32\verifier.dll"
用户进程加载
1 : kd> !process 0 0 x64.exe 1 : kd> !process 0 0 1 : kd> !process -1 1 1 : kd> !process 0 7
系统模块与PE文件检索
0 :000 > lm 0 :000 > lmv 0 :000 > lmt 0 :000 > lmf 0 :000 > lmvm ntdll 0 :000 > !lmi ntdll 0 :000 > !dlls -a 0 :000 > !dlls -l 0 :000 > !dlls -c ntCreateFile 0 :000 > !dlls -c ntdll.dll 0 :000 > !dlls -s -c ntdll.dll 0 :000 > !dlls -v -c ntdll 0 :000 > ld * 0 :000 > ld kernel32 0 :000 > x*! 0 :000 > x ntdll!* 0 :000 > x ntdll!nt* 0 :000 > x /t /v ntdll!* 0 :000 > x kernel32!*Load*
进程与线程操作
| !dml_proc .tlist -v ~ ~. ~* ~0 s ~* k ~* r ~# ~N ~~[n] ~Ns ~~[n]s ~3f 把三号线程冻住 ~2u 把二号线程解冻 ~N n ~N m !runaway !runaway f !locks !cs 0 :000 > .formats 1 d78 !handle
反汇编指令与内存断点
u ub u main.exe+0x10 L20 uf lyshark::add uf /c main ub 000 c135d L20 r r eax, edx r eax=5 , edx=6 g p p 2 pc pa 0x7c801b0b t !address -summary !address -f:stack !address 0x77c000 bl bc * be * bd * bc 1 2 5 be 1 2 5 bd 1 2 5 bp main bp 0x7c801b00 bp main.exe+0x1032 bp @$exentry bm message_*
堆栈操作
k kn kb kb 5 kv kp kd kD dds 02 a9ffec dds .frame .frame n .frame /r n .frame /c n !uniqstack !findstack kernel32 2 !heap -s dt _HEAP 00140000 !heap -a 00140000
其他命令
dt ntdll!* dt -rv _TEB dt -rv _PEB dt -v _PEB @$PEB dt _PEB_LDR_DATA dt _TEB ny LastErrorValue dt _eprocess dt _eprocess 0x510 !dh 773 a0000 显示文件PE头 *是通配符;显示所有peb打头的结构体名称; dt ntdll!_peb* 0 :000 > dt -rv ntkrnlmp!*Object* 枚举ntkrnlmp中带"Object" 的结构体名称;.attach PID 附加进程 .detach 结束会话 .dump 文件名 转存文件 .opendump 打开文件 dt -v ntdll!* # 列出ntdll中的全部结构体,导出的函数名也会列出 dt ntdll!*file* # 下面命令将列出ntdll导出的文件操作相关的函数名 dt _FILE_INFORMATION_CLASS 查看一个结构定义 dt ntdll!_* 列出ntdll中结构体
参考文献 https://www.cnblogs.com/luluping/p/15488354.html