分类 | 命令 | 描述 | 示例($$后为注释) |
帮助 | ? | 显示所有标准命令 | ? |
.help | 显示所有元命令 | .help .help /D $$ 显示带有DML导航链接的帮助 .help /D r* |
|
.hh | 打开帮助文件 | .hh .reload | |
!help | 显示扩展命令 | eg1: !ext.help eg2: !help dumpheap |
|
.chain | 显示加载的插件 | .chain /D | |
!error | 显示错误码含义 | eg1: !error c0000034 eg2: !error 6 eg3: !error 80004005h |
|
version | 显示版本信息 | version | |
表达式 | ? | 评估宏汇编表达式 | ? a27-65e |
?? | 评估C++表达式 | ??(unsigned int) -1073741819 ??&(this->m_Buttonl) |
|
; | 命令分隔符 | r;kv;gc | |
$$ | 注释符号 | ||
poi | 取地址内容 | dd poi(@ebp+8) | |
.expr | 显示或改变表达式类型 | .ex[r /s c++ | |
n | 设置数制 | n 10 | |
.formats | 以多种格式显示 | .formats 80000001 | |
调试会话 | .create | 创建新的进程并调试 | .create notepad.exe |
.attach | 附加到指定进程 | .attach 2568 $$2568是进程ID | |
.restart | 让调式目标重新运行(用户态) | .restart .restart /F |
|
.reboot | 重启目标系统(内核态) | .reboot | |
.crash | 强制目标系统崩溃(内核态) | .crash | |
.detach | 分离调试目标 | .detach | |
q | 终止调试 | q | |
模块和符号 | .symfix | 设置符号服务器 | .symfix c:\symbols |
.reload | 刷新模块和符号 | eg1: .reload .reload /f ntfs.sys eg2: .reload /user |
|
ld | 加载符号文件 | ld kernel32 | |
.sympath | 显示或设置符号路径 | .sympath .sympath+d:\work\debug |
|
!sym | 设置符号选项 | !sym noisy !sym quiet |
|
.symopt | 设置符号选项 | .symopt + 40 $$加载不严格匹配的PDB | |
x | 显示符号 | eg1: x winmine!* eg2: x ole32!*BindToObject |
|
ln | 搜索符号 | eg1: ln aebc6eac eg2: ln poi(0000001`400520b8) |
|
lm | 列模块或显示模块详情 | lm vm urlmon lmD |
|
!lmi | 模块和PDB文件详情 | !lmi nt | |
!dlls | 动态库信息 | !dlls -a | |
!imgreloc | 模块的重定位信息 | !imgreloc | |
!dh | 观察PE文件头 | !dh 76930000 -a | |
转储文件 | .dump | 产生转储文件 | .dump /mfh c:\dumps\pdf\acrobat.dmp |
!analyze | 自动分析 | !analyze -v | |
.writemem | 将内存数据写到文件 | .writemem c:\dumps\blog.txt 07288600 L2000 | |
.bugcheck | 显示蓝屏错误码 | .bugcheck | |
adplus(脚本) | 监视进程和自动转储 | Adplus -pn powerpnt.exe -pn wincmd32.exe -hang -o c:\test | |
进程 | | | 显示或切换进程(用户态) | |* |2s |
!process | 显示进程(内核态) | !process 0 0 !process 0 0 powerpnt.exe !process 8 1 !process 88bfbb90 2 |
|
.dml_proc | 观察进程信息 | !dml_proc $$以DML方式显示进程信息 | |
.process | 显示或切换进程(内核态) | .PROCESS /i 9382a530 | |
.kill | 杀进程 | .kill 8adc85f0 $$参数为EPROCESS地址 | |
!peb | 观察进程环境块 | !peb | |
dt | 观察数据结构 | dt nt!_EROPCESS dt ntdll!_PEB@PEB -r |
|
.tlist | 列进程 | .tlist $$列的是调试器所在系统的进程 | |
线程 | ~ | 显示线程 | ~ ~* |
切换线程 | ~0s $$0是线程序号 | ||
~~[14d8]s $$14d8为线程ID | |||
针对一个或多个线程执行命令 | eg1: ~* kvl eg2: ~*e?@$tid;!gle eg3: ~l k |
||
!teb | 显示线程环境块 | !teb | |
.thread | 显示或切换线程(内核态) | eg1: .thread 80551d20 eg2: .thread /p 87474da8 |
|
!thread | 观察线程(内核态) | eg1: !thread eg2: !thread 9383a030 |
|
dt | 观察数据结构 | eg1: dt nt!_ETHREAD eg2: dt_TEB -y Last eg3: dt_CONTEXT eg4: dt_CONTEXT 0007fd30 |
|
!wow64exts.info | 运行在64为系统的32位线程信息 | !wow64exts.info | |
内存 | !address | 观察内存空间 | !address |
观察内存块属性 | !address 0728988a | ||
s | 搜索内存数据 | s -u 10000 L8000000 "当年在郑大" | |
d | 显示内存数据 | eg1: db e1c52ce0 eg2: da 000000000a4a9640 eg3: dd @ebx 11 eg4: dd bc74ed08 11 eg5: dd 805490c4+8 ll eg6: dU .c 50 poi(0423ed44 + 8) eg7: dS fc8d3528 eg8: du nt!NtInitialUserProcessBuffer eg9: db 0xe17734ac + 14 |
|
dt | 按类型显示 | eg1: dt_GUID 01F1B434 eg2: dt _EXECEPTION_POINTERS 74c97038 -r |
|
e | 编辑内存数据 | eg1: ew 02c9ffcc $$按字(Word)编辑02c9ffcc开始的内存 eg2: eb 001b5942-8 ff fe eg3: ed f655cfb4 f655d7dc |
|
!dd | 读物理地址 | !dd ffffffe0 | |
!ed | 写物理地址 | !ed ffffffe0 80000000 | |
!vtop | 虚拟地址转换到物理地址 | !vtop 0 bafde064 | |
!pte | 显示页表项 | !pte f655cfb4 | |
!memusage | 显示物理内存使用情况 | !memusage | |
!pool | 显示内核池信息 | !pool e326c000 | |
!vad | 观察进程的地址空间 | !vad 8a7605000 | |
!sdbgext.hwnd | 观察或者启用堆的调试支持 | !gflag !gflag +hpa |
|
堆 | !heap | 显示堆信息 | !heap 01670000 -A |
dt | 观察数据结构 | dt_heap_entry 0167fc10 | |
!gflag | 观察或者启用堆的调试支持 | !gflag !fflag+hpa |
|
栈 | k | 函数调用序列 | eg1: kn 100 eg2: kn eg3: k = f655d7dc aebc3e5a aebc3e5a 99 |
.frame | 切换当前栈帧 | .frame /c c | |
dds | 显示数据和符号 | dds 80a056e0 | |
dv | 显示局部变量 | dv -V | |
寄存器 | r | 读写寄存器 | eg1: r cr3 eg2: e cs,ds,es,fs,gs,ss eg3: r cr2 eg4: r eip=0042D69E eg5: r ecx=poi(ecx);r ecx;z(ecx!=0) |
rdmsr | 读MSR寄存器 | rdmsr 19c | |
上下文 | .ecxr | 切换到异常上下文 | .ecxr |
.tss | 切换到指定TSS | .tss 28 | |
.trap | 切换到陷阱帧 | .trap 8089a570 | |
.effmach | 切换32/64位上下文 | eg1: .effmach x86 eg2: .effmach amd64 |
|
断点 | bp | 软件断点 | eg1: bp KERNELBASE!CreateFileW+0x5 "dU /c 50 poi(@ebp+8);gu;r eax;if(@eax<0){.echo hit}.else{gc}" eg2: bp KERNELBASE!CreateFileW+0x5 "dU /c 50 poi(@ebp+8);gc" eg3: bp `d4test!d4testdlg.cpp:196` |
ba | 硬件断点 | ba w4 0006fc74 | |
bm | 成批设置断点 | bm /a nt!Dbgk* | |
bd/be/bc/bl | 管理断点 | bl | |
执行和跟踪 | g | 恢复执行 | g gu $$返回到父函数 |
p | 恢复执行 | p p"dv" $$单步后自动执行dv命令 pc $$单步到下一条call指令 |
|
t | 单步执行 | t tc $$跟踪到下一条call指令 tb $$跟踪到下一条分支指令 |
|
wt | 自动跟踪 | wt -l 3 | |
反汇编 | u | 反汇编 | u nt!PsGetCurrentProcessId |
uf | 反汇编整个函数 | uf RtlLeaveCriticalSection | |
ub | 反向反汇编 | ub 773c78e9 | |
a | 汇编 | a<地址> | |
死锁 | !locks | 扫描关键区(用户态)或ERESOURCE(内核态) | !locks |
!cs | 观察关键区 | !cs -l | |
!alpc | 观察ALPC端口 | !alpc /m 9322a230 | |
dt | 观察数据结构 | eg1: dt_RTL_CRITICAL_SECTION eg2: dt_ERESOURCE dt_KEVENT -r |
|
处理器 | !pcr | 管理处理器控制器控制区 | !pcr |
!dg | 观察段描述符 | dg @fs | |
!idt | 观察IDT表 | !idt -a | |
!cpuid | 显示CPU型号 | !cpuid | |
!cpuinfo | 观察CPU型号 | !cpuinfo | |
!irql | 观察保存的IRQL | !irql | |
dt | 观察数据结构 | dt_KPCR | |
驱动程序 | !drvobj | 显示资源和观察驱动对象 | !drvobj ser2pl |
!devobj | 观察设备对象 | !devobj 85163500 | |
!devstack | 观察设备栈 | !devstack 85163500 | |
!devnode | 观察设备节点 | !devnode 0 1 | |
!irp | 观察IRP | irp 8516e70 | |
dt | 观察数据结构 | dt_IO_STACK+LOCATION 85879d60 dt_IRP dt_DRIVER_OBJECT dt_DEVICE_OBJECT |
|
!arbiter | 显示资源分配情况 | !arbiter 2 $$物理地址分配情况 | |
!pci | 观察PCI空间 | !pci ff 0 2 0 0 ff | |
!pcitree | 显示PCI设备 | !pcitree | |
ib/iw/id | 读I/O端口 | ib 510 | |
ob/ow/od | 写I/O端口 | ob 510 0a | |
!amli | AMLI调试器 | !amli dns /s \_sb_pci0.bat0 | |
托管程序 | .loadby | 加载扩展命令模块 | !loadby sos mscorwks |
.load | 加载扩展模块 | .load clr10\sos.dll | |
!name2ee | 显示名字对应的对象信息 | !name2ee clihello CliHello.CliHello.Main | |
!ip2md | 显示程序地址对应的方法描述 | !ip2md 0x7ff 001c0dbd | |
!threads | 观察线程的托管 | !threads | |
!clrstack | 观察线程的托管 | !clrstack | |
!do | 显示托管对象 | !do 000000002901750 | |
!bpmd | 设置断点 | !bpmd CliHello CliHello CliHello.CliHello.Main | |
注册表 | !reg | 操作注册表 | eg1: !reg openkeys "hklm\software\microsoft\windows nt\currentversion\winlogon" eg2: !reg kcb e101a7a0 eg3: !reg kvalue 0xe17734ac eg4: !reg cellindex 0xe1442920 721380 |
调试事件 | sxe | 配置调试事件 | eg1: sxe ld:portabledeviceapi eg2: sxd ld |
gn | 调试器不处理异常 | gn | |
gh | 调试器处理异常 | gh | |
.lastevent | 显示上一个调试事件的信息 | .lastevent | |
远程调试 | .server | 将调试器升级为调试服务器 | .server tcp:port=2000 |
windbg命令索引
猜你喜欢
转载自blog.csdn.net/qq_31932681/article/details/112306231
今日推荐
周排行