windbg教程
安装
有两种方式可以进行安装,一种是直接在微软的应用商店中搜索windbg preview
进行安装下载,另一种是通过安装win10 SDK
中的debugging tools进行安装。我是采用第二种方式进行安装的,因为第一种方式下载安装的windbg preview
无法运行。
下载下来之后运行选择Debugging Tools for Windows
下载完成之后到一开始选择的目录下面寻找安装文件,安装即可。
安装symbols
将
windbg
的安装目录加入到环境变量中方便程序寻找SYMSRV.DLL, SYMSTORE.EXE
文件新建环境变量
_NT_SYMBOL_PATH
,其值设置为SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
,或者查看windbg的项目地址获取服务器的地址前面的设置的文件夹是用来存储下载的符号文件的,也可以将值设置为
cache*c:\mysymbol;srv*http://msdl.microsoft.com/download/symbols
attach
一个进程,即可以在相应的文件夹下面看到下载的符号文件了
设置工作空间
windbg
会保存每一个你调试的工程信息,类似于ida
的项目文件。每个调试的工作空间的信息默认保存在HKEY_CURRENT_USER\Software\Microsoft\Windbg\Workspaces
中,在这个键下一般有4个子键User、Kernel、Dump、Explicit
, 他们分别保存用户态调试,内核态调试、转储文件调试、以及手动保存(Save Workspace As
)的工作空间信息。
若发现没有相应的子键则说明还没有使用过相应的调试方式。
命令注解
- a表示ASCII码
- b表示字节和ASCII码
- c表示DWORD和ASCII码
- d表示DWORD
- D表示双精度浮点数
- f表示单精度浮点数
- p表示按指针宽度显示
- q表示四字(8字节)
- u表示UNICODE字符
- w表示字
- W表示字和ASCII码
- yb表示二进制和字节
- yd表示二进制和双字
命令 | 含义 |
---|---|
g {address} | 运行/运行到指定地址 |
gu | 执行到从当前函数返回 |
t, tb | 步入, 追踪到下一条分支指令 |
p | 步过 |
pc | 代码运行至下一个子例程调用处 |
wt | 和p类似,可以获取被调用函数的一些信息(如被调用了几次,执行了多少指令等) |
r | 查看和修改寄存器 |
rm | 查看和修改寄存器掩码,用来查看XMM或者MMX寄存器的值 |
u [start] [end] | 反汇编代码 |
uf | 反汇编当前$ip所在的函数 |
ub | 反汇编当前$ip之前的指令 |
k/kp/kb/kf | 显示函数栈帧/解析函数和参数类型/显示前三个函数参数/显示函数只用栈的大小 |
d{a|b|c|d|D|f|p|q|u|w|W|yd|yb} | 查看内存 |
d{d|q|p}s | 将内存中的一个元素(d表示四字节|q表示八字节|p表示根据架构选择)作为一个符号进行解析。用来查看栈 |
d*u | 同上,以Unicode解释内存中的一个元素 |
s | 搜索内存 s -d 0x0 l?0x7fffffff 0x1a2c3b4d 全局搜索0x1a2c3b4d值 |
bp/bu | 设置断点/设置延迟解析的断点 |
ba {r|w}{1|2|4} | 设置内存断点(访问|写入)(1字节|2字节|4字节) |
b{d|e|c} | 禁用/启用/清除断点 |
bm | 批量设置断点 |
bp <address> “cmd” | 条件断点设置/断点后执行的命令bp JP2KLib+50567 “r eax; r ecx; .if(ecx>=fd){}.else{g;};” |
dv { |/i|/V} | 显示局部变量|显示符合类型和参数类型|显示变量存储位置 |
dt {struct} address | 以struct结构查看数据/内存 |
!address | 查看指定的地址是栈内存还是堆内存,如果未指定地址则枚举所有内存区域 |
!peb/!teb | 获取进程的PEB和线程的TEB |
!gle | 显示错误码和格式化字符串 |
.cxr <content address> | 重新指定上下文 |
e{d|b} | 修改全局变量/修改当前执行的代码 |
!error | 根据错误码查找错误信息 |
poi(address) | 获取address指向内存的内容 |
? | 计算表达式 |
.formats <data> | data进行格式转换(显示所有的格式) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LYYL' Blog!
评论