加密与解密 调试篇 动态调试技术 (五)-WinDbg

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

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 : 指定一组命令 当断点中断的时候 自动执行这些命令

用双引号来包裹指令  分号来区分多指令
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值