windbg主要厉害的地方是在他可以对内核调试
并且本身微软的产品 对windows调试适配度够高
注意 windbg给出的图形操作并不好用 主要是使用命令行来进行操作
我们省略安装
直接进入调试
file
可以打开软件 可以附加
也可以分析dump文件
还可以进行内核和 远程调试
内核调试分为5种
NET USB 1394 COM和本地调试
前面四种是双机调试模式
附加进程的非入侵模式调试 dump文件调试和本地内核调试都是属于非实时调试模式
不能直接控制被调试目标的中断和运行
一般是用来观察的
也可以用来修改内存数据
1.开始调试
Ctrl+E 打开程序
F6可以附加调试
在windbg中反汇编代码默认停止在 ntdll.dll 的系统断点处
并不会停在程序入口处
我们需要在命令窗口 输入
g@$exentery 转到程序入口
2.这里给出目标的执行命令
| 命令 | 快捷键 | 功能 |
| t | F8/F11 | 跟踪执行,进入call |
| p | F10 | 单步执行,不进入call |
| g | F5 | 运行程序 |
| pa 地址 | 单步到指定地址 并且不进入call | |
| ta 地址 | 追踪到指定地址 并且进入call | |
| pc [count] | 单步执行到下一个call调用 | |
| tc [count] | 追踪到下一个call调用,遇到call进行跟进 | |
| tb [count] | 追踪到下一条分支指令 遇到call进行跟进 【只适用于内核调试】 |
|
| pt | 单步执行到下一条call的返回 | |
| tt | 追踪到下一条call的返回,并且遇到call进行跟进 | |
| ph | 单步执行到下一条分支指令 | |
| th | 追踪执行到下一条分支指令,遇到call进行跟踪 | |
| wt | 自动追踪函数执行过程 |
$ra代表当前函数的的返回地址
所以使用
“pa @$ra”
来走出当前函数
pc和tc都是执行到下一个call指令
count用于指定 遇到call的个数
默认是1
如果count为1 pc和tc这两个指令是等价的
3.这里给出的是断点指令
1.软件断点
bp断点
bp[ID] [Options] [Address [Passes]] ["CommandString"]
ID : 指定断点
options:
/l :一次性断点
/c :指定最大调用深度 大于这个深度断点不工作
/C :指定最小调用深度 小于这个深度断点不工作
Address:
地址或符号 例如 MessageBoxW
Passes:忽略中断的次数
CommandString : 指定一组命令 当断点中断的时候 自动执行这些命令
用双引号来包裹指令 分号来区分多指令

本文详细介绍了Windbg的强大功能,包括内核调试、附加进程、分析dump文件以及各种调试命令的使用,如断点设置、单步跟踪、内存查看和修改。此外,还讲解了软件断点、硬件断点、条件断点的创建和管理,以及如何利用栈窗口追溯函数调用过程。文章最后提供了一个实际的调试例子,展示了如何使用Windbg进行特定条件的断点设置。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



