免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > od内存断点的探析和检测方法(3)

od内存断点的探析和检测方法(3)

时间:2011-12-19 16:17来源:未知 整理:寂涯网络 点击:


综合来看,如果某片内存的保护属性发生了不应该发生的变化,就说明程序被调试。明
白了这个,我们就可以动手写反调试的代码了:  
#include <windows.h>
main()
{
 static DWORD dwTestData;
  DWORD dwOldProtect;
 ::VirtualProtect(&dwTestData,sizeof(DWORD),PAGE_READWRITE,&dwOldPro
tect);
 if (dwOldProtect != PAGE_READWRITE)
 {
  ::MessageBox(0,"Find Membreakpoint","Warning",0);
 }

先看效果。如果普通运行,或者OD载入,但没对 dwTestData下内存断点,程序正常运
行,如果对dwTestData下了内存断点,则会弹框提示(图1):
 
 

代码很简单。同样是利用了设置内存属性页的 API,不过这里由于是本程序,用的是
VirtualProtect。VirtualProtect的最后一个参数是dwOldProtect),用来保存该内存页的
原保护属性。我们可以通过这个参数,来比较一下内存保护属性是否被改变。一般的变量,
内存保护属性是PAGE_READWRITE,也即 0x4,因此,如果原保护属性不为这个值,则说明程
序被调试了。最后,我们有两个选择:可以终止程序,也可以忽略。因为我们已经重新设置
的内存保护属性,内存断点已经不再生效。
当然,这只是个很简陋的代码,而且只是针对某块或某几块可能被下内存断点的“重点
保护对象”进行检测。不过,既然我们已经了解了内存断点的原理,因地制宜地设置更灵活
多变的检测代码,应该也不是什么不可能的事了。

 

本页地址 http://www.jybase.net/ruanjianpojie/20111219723.html

百度搜索更多

谷歌搜索更多

顶一下
(4)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com