引用:windows码农屠龙手册
参考官方文档:使用 WinDbg 进行调试 - Windows drivers | Microsoft Docs
寄存器含义:寄存器含义
windbg下载地址:
x64:http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi
x86:http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi
配置:
C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2206.19001.0_x64__8wekyb3d8bbwe
1.显示所有线程
~ // 显示所有线程
~*
2.显示堆栈
k // 显示当前堆栈
kb // 显示当前堆栈,包括显示传递给堆栈跟踪中每个函数的前三个参数
kp // 显示当前堆栈,显示传递给堆栈回溯中的每个函数的所有参数
~0k // 显示第0个线程的堆栈,主线程
3.反汇编
view->disassmebly // 打开反汇编窗口
u [address] // 查看某个地址的反汇编代码
u [func] // 查看某个函数的反汇编代码
4.
r ebp //查看寄存器的指针地址
dv // 显示局部变量
5.调试
t // 下一步,可进入函数体
p // 下一步,可跳过函数体
g // 继续go, F5
tb // 执行到下一个分支
tc // 执行到下一个函数
6.常用命令
!analyze -v // 分析
.ecxr // 查看当前异常的上下文信息、和部分寄存器信息
.exr -1
.frame 数字 // 跳到对应的栈帧
lmvm "模块名" // 显示该模块的详细信息
kb // 显示堆栈崩溃,具体到行
.reload /i spdbicps.exe 强制关联pdb
lmvm heap_corruption
lmDv
.dump /ma D:/example.dmp // 生成dmp到指定文件夹
dt _DPH_BLOCK_INFORMATION 地址-0x20
dds 地址
.load wow64exts // [!load wow64exts] 加载wow64exts.dll模块 注:!sw就是wow64exts中的命令
.unload wow64exts // [!unload wow64exts] 卸载wow64exts.dll模块
.effmach // 查看当前调试mode:x86、x64等
.effmach x86 // 切换到x86栈环境 注:需要先执行.load wow64exts来加载wow64exts.dll模块
.effmach . // 切换回x64
!cs -l // 查看死锁
dg // 查看一个段选择器子所指向的段描述符的详细信息
.formats // 在当前线程和进程的上下文中计算表达式或符号,并以多种数字格式显示它。
!runaway 查看cpu占用
.time //代表进程运行时间
!process 0 0 // 查看所有进程信息
s -sa 首地址 结束地址 // 命令搜索未指定的ASCII字符串
s -su 首地址 结束地址 // 命令搜索未指定的Unicode字符串
? 0y0101010 // ? C++表达式,0x前缀(16进制)、 0n前缀(10进制)、 0t前缀(8进制)或 0y前缀2进制
!locks 如果失败,则加载sos.dll :.load
C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll 然后 .reload
7. 下载微软符号文件
.sympath SRV*c:\mySymbols*http://msdl.microsoft.com/download/symbols
.reload