前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >X86逆向10:学会使用硬件断点

X86逆向10:学会使用硬件断点

作者头像
微软技术分享
发布2022-12-28 15:28:31
3370
发布2022-12-28 15:28:31

本节课我们将学习硬件断点的使用技巧,硬件断点是由硬件提供给我们的一组寄存器,我们可以对这些硬件寄存器设置相应的值,然后让硬件帮我们断在需要下断点的地址上面,这就是硬件断点,硬件断点依赖于寄存器,这些寄存器有个通用的名称,即调试寄存器,调试寄存器一共有8个分别从Dr0-Dr7。在软件破解中硬件断点常用来寻找赋值或读取的原始位置。

硬件断点并不是OD等调试器的特有功能,调试器只是把用户的需求转换成特定的格式,并写入DRX寄存器组中,等待硬件返回执行结果,由于硬件断点是由CPU直接提供硬件级别的支持,所以硬件断点的效率是所有断点中最高的。

在OD等调试器中,除了硬件断点之外,还有个内存断点,内存断点通过修改内存页的属性并捕获异常来间接暂停被调试的程序运行,内存断点的效率大大低于硬件断点,但内存断点的自由性大于硬件断点,通常情况下能用硬件断点则不要使用内存断点,有时候容易卡成狗。

------------------------------------------------------------ 本章难度:★★★★☆☆☆☆☆☆ 课程课件:CM_10.zip ------------------------------------------------------------

1.老样子在进行破解实战之前,我们先来看一个CM小程序,先了解一下硬件断点的使用技巧,如下OD直接载入这个CM程序然后运行。

2.我们直接按下【Ctrl + B】,输入按钮事件特征码【FF 55 FC 5F 5E】,然后在CALL的位置下断点。

3.回到CM程序,点击【测试硬件写入断点】,OD断下后按下【F7】进入到CALL的内部,也就是按钮的按钮事件。

上图有CMP指令,该指令取出【4A25F0】中的数值,和0做了一次比较,从而影响了JNZ跳转,我们接下来就是找到是谁向这个内存地址写入的数据。

4.直接在数据窗口,按下【Ctrl +G】,输入内存地址【4A25F0】,会发现其中的数值是0。

5.选择数据窗口中的第一个DWORD数据,然后选择【断点】,【硬件写入】,【DWORD】,这里的DWORD是由CMP指令决定的,此处【CMP DWORD PTR】所以我们需要下一个DWORD断点。

6.下完断点后重新载入程序,然后运行程序会直接断下,你会发现一条【MOV DWORD 】这样的赋值语句,没错这就是源头。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档