分类 | 命令 | 描述 | 示例($$后为注释) | 页码 |
| | | | |
帮助 | ? | 显示所有标准命令 | ? | |
| .help | 显示所有元命令 | .help | |
| | | .help /D $$显示带有DML导航链接的帮助 | |
| | | .help /D r* | |
| .hh | 打开帮助文件 | .hh .reload | |
| !help | 显示扩展命令 | !ext.help | 237 |
| | | !help dumpheap | 237 |
| .chain | 显示加载的插件 | .chain /D | 237 |
| !error | 显示错误码含义 | !error c0000034 | 14 |
| | | !error 6 | 114 |
| | | !error 80004005h | 179 |
| version | 显示版本信息 | version | |
表达式 | ? | 评估宏汇编表达式 | ? a27-65e | 96 |
| ?? | 评估C++表达式 | ?? (unsigned int)-1-73741819 | |
| | | ??&(this->m_Button1) | |
| ; | 命令分隔符 | r;kv;gc | |
| $$ | 注释符号 | | |
| poi | 取地址内容 | dd poi(@ebp+8) | |
| .expr | 显示或改变表达式类型 | .expr /s c++ | |
| n | 设置数制 | n 10 | |
| .formats | 以多种格式显示数 | .formats 80000001 | 288 |
调试会话 | .create | 创建新的进程并调试 | .create notepad.exe | |
| .attach | 附加到指定进程 | .attach 2568 $$ 2568 是进程的ID | |
| .restart | 让调试目标重新运行(用户态) | .restart | 114 |
| | | .restart /F | |
| .reboot | 重启目标系统(内核态) | .reboot | |
| .crash | 强制目标系统崩溃(内核态) | .crash | |
| .detach | 分离调试目标 | .detach | |
| q | 终止调试 | q | |
模块和符号 | .symfix | 设置符号服务器 | .symfix c:\symbols | 39,157 |
| .reload | 刷新模块和符号 | .reload | 39 |
| | | .reload /f ntfs.sys | |
| | | .reload /user | 47 |
| ld | 加载符号文件 | ld kernel32 | |
| .sympath | 显示或设置符号路径 | .sympath | 94 |
| | | .sympath + d:\work\debug | |
| !sym | 设置符号选项 | !sym noisy | |
| | | !sym quiet | |
| .symopt | 设置符号选项 | .symopt + 40 $$ 加载不严格匹配的PDB | |
| x | 显示符号 | x winmine!* | 318 |
| | | x ole32!*BindToObject | 70 |
| ln | 搜索符号 | ln aebc6eac | 91 |
| | | ln poi(0000001`400520b8) | 141 |
| lm | 列模块或显示模块详情 | lm vm urlmon | 4 |
| | | lmD | |
| !lmi | 模块和PDB文件详情 | !lmi nt | |
| !dlls | 动态库信息 | !dlls -a | |
| !imgreloc | 模块的重定位信息 | !imgreloc | |
| !dh | 观察PE文件头 | !dh 76930000 -a | 341 |
转储文件 | .dump | 产生转储文件 | .dump /mfh c:\dumps\pdf\acrobat.dmp | 72 |
| !analyze | 自动分析 | ! analyze -v | 14,82 |
| .writemem | 将内存数据写到文件 | .writemem c:\dumps\blog.txt 07288600 L2000 | 10 |
| .bugcheck | 显示蓝屏错误码 | .bugcheck | |
| adplus(脚本) | 监视进程和自动转储 | Adplus -pn powerpnt.exe -pn wincmd32.exe -hang -o c:\test | 61 |
进程 | | | 显示或切换进程(用户态) | |* | |
| | | |2s | |
| !process | 显示进程(内核态) | !process 0 0 | |
| | | !process 0 0 powerpnt.exe | 19,94 |
| | | !process 8 1 | 65 |
| | | !process 88bfbb80 2 | |
| !dml_proc | 观察进程信息 | !dml_proc $$ 以DML方式显示进程信息 | |
| .process | 显示或切换进程(内核态) | .PROCESS /i 9382a530 | 47 |
| .kill | 杀进程 | .kill 8adc85f0 $$参数为EPROCESS地址 | |
| !peb | 观察进程环境块 | !peb | |
| dt | 观察数据结构 | dt nt!_EPPROCESS | |
| | | dt ntdll!_PEB @$peb -r | |
| .tlist | 列进程 | .tlsit $$列的是调试器所在的系统的进程 | |
线程 | ~ | 显示线程 | ~ | |
| | | ~* | |
| | 切换线程 | ~0s $$ 0 是线程序号 | 62,75 |
| | | ~~[14d8]s $$ 14d8为线程的ID | 128 |
| | 针对一个或多个线程执行命令 | ~* kvl | 73 |
| | | ~*e ? @$tid;!gle | 126 |
| | | ~1k | 75 |
| !teb | 显示线程环境块 | !teb | 311 |
| .thread | 显示或切换线程(内核态) | .thread 80551d20 | 151 |
| | | .thread /p 87474da8 | 159 |
| !thread | 观察线程(内核态) | !thread | 97 |
| | | !thread 9383a030 | 49,66 |
| dt | 观察数据结构 | dt nt!_ETHREAD | |
| | | dt _TEB -y Last | 127 |
| | | dt _CONTEXT | 391 |
| | | dt _CONTEXT 0007fd30 | 391 |
| !wow64exts.info | 运行在64位系统的32位线程信息 | !wow64exts.info | |
内存 | !address | 观察内存空间 | !address | 6 |
| | 观察内存块属性 | !address 0728988a | 8 |
| s | 搜索内存数据 | s -u 10000 L8000000 "当年在交大" | |
| d | 显示内存数据 | db e1c52ce0 | 14 |
| | | da 000000000a4a9640 | 215 |
| | | dd @ebx 1l | 75 |
| | | dd bc74ed08 1l | 66 |
| | | dd 805490c4 + 8 1l | 154 |
| | | dU /c 50 poi(0423ed44 + 8) | 114 |
| | | dS fc8d3528 | 347 |
| | | du nt!NtInitialUserProcessBuffer | 349 |
| | | db 0xe17734ac + 14 | 356 |
| dt | 按类型显示 | dt _GUID 01f1b434 | 26 |
| | | dt _EXCEPTION_POINTERS 74c97038 -r | 41 |
| e | 编辑内存数据 | ew 029ffcc $$ 按字(Word)编辑029ffcc开始的内存 | 7 |
| | | eb 001b5942-8 ff fe | 10 |
| | | ed f655cfb4 f655d7dc | 88 |
| !dd | 读物理地址 | !dd ffffffe0 | |
| !ed | 写物理地址 | !ed ffffffe0 80000000 | |
| !vtop | 虚拟地址转换到物理地址 | !vtop 0 bafde064 | 154 |
| !pte | 显示页表项 | !pte f655cfb4 | 89 |
| !memusage | 显示物理内存使用情况 | !memusage | |
| !pool | 显示内核池信息 | !pool e326c000 | |
| !vad | 观察进程的地址空间 | !vad 8a760500 | |
| !sdbgext.hwnd | 观察窗口句柄 | !sdbgext.hwnd 001506c4 | 66 |
堆 | !heap | 显示堆信息 | !heap 01670000 -A | 387 |
| dt | 观察数据结构 | dt _heap_entry 0167fc10 | 398 |
| !gflag | 观察或者启用堆的调试支持 | !gflag | |
| | | !gflag + hpa | |
栈 | k | 函数调用序列 | kn 100 | 25,67 |
| | | kn | 142 |
| | | k = f655d7dc aebc3e5a aebc3e5a 99 | 89 |
| .frame | 切换当前栈帧 | .frame /c c | 26 |
| dds | 显示数据和符号 | dds 80a056e0 | 287 |
| dv | 显示局部变量 | dv -V | |
寄存器 | r | 读写寄存器 | r cr3 | 85 |
| | | r cs,ds,es,fs,gs,ss | 309 |
| | | r cr2 | 91 |
| | | r eip= 0042D69E | 301 |
| | | r ecx = poi(ecx);r ecx;z(ecx!=0) | 181 |
| rdmsr | 读MSR寄存器 | rdmsr 19c | 307 |
上下文 | .ecxr | 切换到异常上下文 | .ecxr | 139 |
| .tss | 切换到指定TSS | .tss 28 | 87 |
| .trap | 切换到陷阱帧 | .trap 8089a570 | |
| .effmach | 切换32/64位上下文 | .effmach x86 | |
| | | .effmach amd64 | |
断点 | bp | 软件断点 | "bp KERNELBASE!CreateFileW+0x5""dU /c 50 poi(@ebp + 8);gu; | 114 |
| | | r eax;if(@eax<0){.echo hit}.else{gc}"" " | |
| | | | |
| | | | 113 |
| | | bp KERNELBASE!CreateFileW+0x5"dU /c 50 poi(@ebp+8);gc" | |
| | | | |
| | | | |
| ba | 硬件断点 | bp `d4dtest!d4dtestdlg.cpp:196` | 149 |
| bm | 成批设置断点 | ba w4 0006fc74 | |
| bd/be/bc/bl | 管理断点 | bm /a nt!Dbgk* | |
执行和跟踪 | g | 恢复执行 | bl | 118 |
| | | g | |
| p | 单步执行 | gu $$ 返回到父函数 | |
| | | p | |
| | | p "dv" $$单步后自动执行dv命令 | |
| t | 单步跟踪 | pc $$单步到下一条call指令 | |
| | | t | |
| | | tc $$跟踪到下一条call指令 | |
| wt | 自动跟踪 | tb $$跟踪到下一条分支指令 | 295 |
反汇编 | u | 反汇编 | wt - 13 | 85 |
| uf | 反汇编整个函数 | u nt!PsGetCurrentProcessId | 143 |
| ub | 反向反汇编 | uf RtlLeaveCriticalSection | 141 |
| a | 汇编 | ub 773c78e9 | |
死锁 | !locks | 扫描关键区(用户态)或ERESOURCE(内核态) | a<地址> | 76 |
| | | !locks | |
| !cs | 观察关键区 | | 77 |
| !alpc | 观察ALPC端口 | !cs -1 | 51 |
| dt | 观察数据结构 | !alpc /m 9322a230 | 77 |
| | | dt _RTL_CRITICAL_SECTION | |
| | | dt _ERESOURCE | |
处理器 | !pcr | 管理处理器控制区 | dt _KEVENT -r | 149 |
| dg | 观察段描述符 | !pcr | 150 |
| !idt | 观察IDT表 | dg @fs | 314 |
| !cpuid | 显示CPU型号 | !idt -a | |
| !cpuinfo | 显示CPU属性(内核态) | !cpuid | |
| !irql | 显示保存的IRQL | !cpuinfo | |
| dt | 观察数据结构 | !irpl | |
驱动程序 | !drvobj | 显示和观察驱动对象 | dt -KPCR | 160 |
| !devobj | 观察设备对象 | !drvobj ser2pl | 162 |
| !devstack | 观察设备栈 | !devobj 85163500 | 161 |
| !devnode | 观察设备节点 | !devstack 85163500 | 161 |
| !irp | 观察IRP | !devnode 0 1 | 163 |
| dt | 观察数据结构 | !irp 85163e70 | 165 |
| | | dt _IO_STACK_LOCATION 85879d60 | |
| | | dt _IRP | |
| | | dt _DRIVER_OBJECT | |
| !arbiter | 显示资源分配情况 | dt _DEVICE_OBJECT | 297 |
| !pci | 观察PCI空间 | !arbiter 2 $$物理地址的分配情况 | |
| !pcitree | 显示PCI设备 | !pci ff 0 2 0 0 ff | |
| ib/iw/id | 读I/O端口 | !pcitree | |
| ob/ow/od | 写I/O端口 | ib 510 | |
| !amli | AMLI调试器 | ob 510 0a | 258,262 |
托管程序 | .loadby | 加载扩展命令模块 | !amli dns /s \_sb_.pci0.bat0 | 129 |
| .load | 加载扩展命令模块 | !loadby sos mscorwks | 236 |
| !name2ee | 显示名字对应的对象信息 | .load clr10\sos.dll | 239 |
| !ip2md | 显示程序地址对应的方法描述 | !name2ee clihello CliHello.CliHello.Main | 132 |
| !threads | 观察线程的托管 | !ip2md 0x7ff 001c0dbd | 129 |
| !crlstack | 托管栈回溯 | !threads | 129 |
| !do | 显示托管对象 | !clrstack | 130 |
| !bpmd | 设置断点 | !do 0000000002901750 | 238 |
注册表 | !reg | 操作注册表 | !bpmd CliHello CliHello.CliHello.Main | 355 |
| | | !reg openkeys "hklm\software\microsoft\windows nt\currentversion\winlogon" | |
| | | !reg kcb e101a7a0 | 355 |
| | | !reg kvalue 0xe17734ac | 355 |
| | | !reg cellindex 0xe1442920 721380 | 356 |
调试事件 | sxe | 配置调试事件 | sxe ld:portabledeviceapi | 409 |
| | | sxd ld | |
| gn | 调试器不处理异常 | gn | |
| gh | 调试处理异常 | gh | |
| .lastevent | 显示上一次调试事件的信息 | .lastevent | |
远程调试 | .server | 将调试器升级为调试服务器 | .server tcp:port= 2000 | 58 |