hao516677 发表于 2016-5-24 10:39

如何检测到断点的

本帖最后由 hao516677 于 2016-5-24 23:08 编辑

易语言如何检测到OD对程序下断点的?

反硬件断点,int3断点是怎么做到的

能否说下原理
有没有源码学习一下


例子,下按钮断点试试。
OD载入运行后,下按钮事件断点,会崩溃








yl1003 发表于 2016-5-24 12:46

先获取API地址,例如 usre32.dll MessageBoxA,得到MessageBoxA的地址,判断首地址的汇编代码是否为十六进制C3,C3代表int3断点。如果是c3代表被下了断点。如果是E9则可能此函数被hook,当然hook的方式不止这一种。

虚无空幻 发表于 2016-5-24 12:53

检测硬件断点有c++的源码.可以检测和删掉断点
int断点就是md5就可以了.或者对比代码段来还原
内存断点,重置内存属性即可.

hao516677 发表于 2016-5-24 20:26

yl1003 发表于 2016-5-24 12:46
先获取API地址,例如 usre32.dll MessageBoxA,得到MessageBoxA的地址,判断首地址的汇编代码是否为十六进制 ...

这个似乎只能检测一些dll。
见到过一个,下按钮断点,就能检测到的

hao516677 发表于 2016-5-24 20:38

虚无空幻 发表于 2016-5-24 12:53
检测硬件断点有c++的源码.可以检测和删掉断点
int断点就是md5就可以了.或者对比代码段来还原
内存断点,重 ...

好的,谢谢

阿卡林 发表于 2016-5-25 11:30

提供一个简单的方法。
接管程序异常,判断是否为debug_break_point,一般无驱od,你都可以在他之前处理。

帝王 发表于 2016-5-25 15:31

额,硬件断点,貌似易语言的现在还不能做到这个技术吧,毕竟硬件断点权限太高了。易语言写的东西都是在最低级的。int3足够了,防PJ完全足够,至少能防住百分之八十。。

yl1003 发表于 2016-5-25 18:28

hao516677 发表于 2016-5-24 20:26
这个似乎只能检测一些dll。
见到过一个,下按钮断点,就能检测到的

谁告诉你只能检测DLL的?只要知道地址,就可以检测,。
页: [1]
查看完整版本: 如何检测到断点的