[原创]硬件条件断点插件源码!!!(我的第一次)
发表于:
2012-3-9 13:25
22166
刚刚写好的!!!VC6.0
支持硬件访问,写入,执行条件断点。
如上图
Set 设置条件断点
格式如下:
所有字符都是小写的。空格不能多也不能少哈.
e [esp+8]==1000 44caa3 4
e [44d008]==408d01 44caa3 4
// 下面这个e eax==7c92dcba 44caa3 4
// 4是没用的,但是必须输入
e eax==7c92dcba 44caa3 4
a [44dfb8]==44fbb0 4
w [44d09c]==0 4
e[esp+8]==100 错 e后少一个空格
e [esp+8]==100 错 e后多一个空格
e [esp+ 8]==100 错 8前面不能有空格
e [Esp+8]==100 错 Esp要小写
比如:
e [eax-8]==fffb6f60 44caa3 4
就只能有3个空格,分别是e后面一个
fffb6f60 后面一个
44caa3 后面一个
4后面不能有空格
第一个字符:
e表示设置执行断点
a设置访问条件断点
w设置写入条件断点
举个例子:
e表示设置执行断点
[esp+8]==1000 条件表达式(满足这个表达式就会断下来)
44caa3 表示执行到这里会进行判断
4 表示[esp+8]要读取的内存大小
e [esp+8]==1000 44caa3 4
表示当执行到44caa3,并且取地址[esp+8]大小为4字节的内容
如果等于1000则断下来,不等于就运行。
w [44d09c]==0 4
表示写入44d09c大小为4字节的内存后,如果[44d09c]==0,
则断下来
断点设置后可以点菜单Info看是不是设置成功。
成功了会显示序号。
1 地址:xxxx 类形 a or w or e
如上图
Del 删除你设置的条件断点(接受输入序号,序号Info中显示的)
Info 可以查看你设置的条件断点
原理就是硬件断点断下来的时候OD会回调
int ODBG_Pausedex(int reason, int extdata, t_reg *reg, DEBUG_EVENT *debugevent);
这个函数。只要在这里判断就可以实现了。
有一个地方不太好就是反汇编窗口会变化,那怕没断下来。
对命令的判断使用的是deexl正则表达式。
只有一个头文件很方便。
附上deexl正则表达式的帮助文件.
在4楼
源码
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
上传的附件: