为OllyDbg增添“内存硬件条件断点”功能(1)

本文介绍了一种在OllyDbg调试器中添加内存条件硬件断点的方法,通过对OllyDbg进行扩展,使得用户可以在特定条件下触发断点,避免了不必要的中断,提高了调试效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感谢OllyDbg的作者,写出了这么好的调试器,感谢cao_cong老师做的汉化,感谢众多插件作

者,我常用的是OllyDbg v1.1【汉化第二版】(一下简称OD)。API的参数总是通过堆栈

交换,局部变量也是安排在堆栈中,比如说一个数值在堆栈0012DACC位置出现了,追踪这些值的

一般做法是,查找到该位置上下较近的一个“返回到XXXX”,参考这个“xxxx”位置,不难定位

到哪句代码把0012DACC处的值写入的。当堆栈该处上下位置位置很远处找不到“返回到XXXX”

时,不得已,下内存断点吧:在OD的数据区右击鼠标,用菜单"转到-> 0012DACC,将堆

栈映射到数据区,在“0012DACC”处下内存写入断点,跑起OD,运气好的话,n次断下后,目

标出现了(心情激动),运气不好,由于在堆栈区下断,断下太频繁,人累的不行,目标却在10万

8千里之外。。。搞不好被调试代码出个“蓝屏”罢工了,只好放弃。可以设想:在0012DACC处

下断时设置一个条件“该处值为XXXX时断下,不是该值则继续跑”,这是一个好主意。可惜的是,

美中不足,OD没有这项功能。很长一段时间,我一直想也许新版本能增加这项功能,可是2.0版没

有增加。用罗聪的OllyMachine写脚本,几句代码可以搞定,但是效率不能令人满意。在OD上直

接动手吧,一是没有参考资料,二是对OD的敬畏之情,迟迟不能下手。前几天登陆论坛,一下子找

到了好东西,武汉科锐学员: angelqkm的《OllyDBG分析报告系列》,这么好的东西我竟

然没看见。也是因为个人一些状况,我已经5年多没登陆了,感谢看雪论坛保留了我的ID。经过一

周的努力,“为OllyDbg添加内存条件硬件断点功能”有了初步成果,现在准备贴出,请高手指

点。

我为OD增加的功能如下:在数据区下内存硬件断点(访问、写入)时,弹出一个对话框,输入该内

存处的数值作为断下条件,当条件满足时断下,不满足时继续跑。原理如下:由于硬件断点的原理

是通过设置调试寄存器dr0---dr7后,代码运行时触发中断,

代码断下,OD就把中断的一些信息报告出来,等待用户下一步的操作,用户按下F9后,代码再次

跑起来。好了如果OD不是简单的报告信息,而是报告之前先行判断一下这个断下是否是用户需要

的,如果是用户需要的就报告给用户,等待用户处理,不是用户需要的就不再报告信息,继续跑代

码,这就是条件硬件断点最好的实现方法。由于我一时没搞清OD的硬件断点异常处理的细节,就采

取了变通的做法:OD继续以自己的方式报告中断信息,等待用户处理时判断一下这个中断是否是用

户期望的,如果不是,就“替代用户按一下F9”,代码再次跑起来。这个变通做法从效率上讲,是

OD做了一些无用功,既然不是用户期望的中断理当直接处理现场跑代码,不需再做报告信息的工作

了。但是以上变通做法的效率比用OllyMachine写脚本,提高了很多。[/SIZE][/SIZE]

 

由于上传大小的限制分成了两部分,第二个分卷就不要分了 以下是主要的修改: 添加了一些API的识别. 添加到290个结构体&枚举类型. 添加到2504个API函数结构. 包含了部分VB常见函数,部分VC函数.包含部分MSVCRT.DLL函数. 该版本看雪的论坛中下载(添加过API后版本) 主要修改: 1、自动配置UDD、PLUGIN为绝对路径 2、解决 OD 格式化 Long Double 错误 3、OD数据窗口复制BUG 4、引入OllyDbg Fix Module v0.9.0.0 插件,并修正在调试时不支持相对路径 5、集成了Loadpe,ImportREC,记事本、计算器等破解常用工具 6、编写了自定义管理工具,并集成到OD到配置菜单中。 ollydbg为英文版,未做修改。 注:OD在调试程序是,无法打开配置程序,本人水平有限,无法修正 发现Bug,请及时通告,e_mail:gjianbo@163.com QQ:30481007 以下是OllyDbg Fix Module的介绍 OllyDbg Fix Module v0.9.0.0 使用 LordPE 等工具在 Ollydbg 导入表中添加以下 dll 和函数即可使用增强功能,完成补丁: dll ==> OllyPath.dll 函数 ==> Set0llyPatch 注意:如果使用 PETools,可能会导致原程序无法运行。 ======================================================================== OllyDbg Fix Module v0.9.0.0 功能 更改 Ollydbg 各窗口的类名称和标题文本,增加隐蔽性; 添加自定义工具菜单; 将载入的插件数由 32 扩展到 50 或更多; 修正格式化字符串的漏洞 [OutPutDebugString]; 在 CPU 数据窗口选择数据时,可以显示地址和选择范围等.... 增强的 LoadDll.exe 文件 ======================================================================== OllyPath.ini 设置 FIX_CLASSANDTEXT=Y 是否更改窗口的类和标题栏文本 [Y=是,N=否] FIX_TOOLSMENU=Y 是否使用工具菜单 FIX_STACKASCIISHOW=Y 是否显示堆栈中的 ASCII FIX_OUTPUTDEBUGSTRING=Y 是否修正修正格式化字符串的漏洞 FIX_DUMPADDRESS=Y 是否显示数据窗口中当前所选的数据地址和范围等(查看状态栏) FIX_PLUGCOUNT=N 是否扩展插件数 CLASS=!OllYDBG 主窗口类名称 WINTEXT=!OllYDBG 主窗口标题栏文本 ACPUASM=!CPUASM ACPUDUMP=!CPUDUMP ACPUSTACK=!CPUSTACK ACPUREG=!CPUREG ACPUINFO=!CPUINFO ACPU=!CPU PLUGCOUNT=50 最多允许载入的插件数目 ;以下是自定义菜单中的设置 TOOL1=记事本|notepad.exe 工具序数=程序名称|程序完整路径和文件名 + 扩展名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值