OD里下断点实际上是将代码改成int 3,又叫“CC中断”。基于这个原理,我们可以在程序中创建一个线程,实时检测代码区是否被修改,从而实现反OD下断点。

下面是代码演示:

// 校验和反调试.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// 为了方便测试,请在链接器选项中关闭随机基址ASLR#include <windows.h>
#include <stdio.h>DWORD g_dwCheckSum = 0; // 校验和DWORD WINAPI CheckThread(LPVOID lpvoid)
{printf("校验线程开始\n");while (1){// 计算校验和DWORD dwBaseOfCode = 0x00411000; // 代码起始地址DWORD dwSizeOfCode = 0x6000; // 代码长度DWORD dwCheckSum = 0;for (DWORD i = dwBaseOfCode; i < dwBaseOfCode + dwSizeOfCode; i++){dwCheckSum += *((PBYTE)i);}if (dwCheckSum != g_dwCheckSum){printf("检测到CC断点,程序结束\n");ExitProcess(1);}}printf("校验线程结束\n");return 0;
}int main()
{DWORD dwBaseOfCode = 0x00411000; // 代码起始地址DWORD dwSizeOfCode = 0x6000; // 代码长度printf("%08x\n%08x\n", dwBaseOfCode, dwBaseOfCode+dwSizeOfCode);for (DWORD i = dwBaseOfCode; i < dwBaseOfCode + dwSizeOfCode; i++){g_dwCheckSum += *((PBYTE)i);}// 启动代码检测线程CreateThread(0, 0, CheckThread, 0, 0, 0);int cnt = 0;while (1){printf("程序正在执行...%d\n",++cnt);Sleep(1000);}return 0;
}

拿到OD里跑起,不下断点,结果如下:

随便下一个F2断点,检测线程就会结束进程。

检测代码区校验和实现简易反调试相关推荐

  1. 恶意软件反检测技术简介:反调试技术解析

    本文中,我们将向读者介绍恶意软件用以阻碍对其进行逆向工程的各种反调试技术,以帮助读者很好的理解这些技术,从而能够更有效地对恶意软件进行动态检测和分析. 一.反调试技术 反调试技术是一种常见的反检测技术 ...

  2. 企业壳的反调试及Hook检测分析

    1.写在开始 最近在学习梆梆壳,在调试的过程中遇到了反调试,很是苦恼,而且每次调试都会被中断,朋友发了篇帖子[1]介绍了其中的一个反调,学习后收获颇多,给我指明了方向,接下来再对其他反调试进行补充,若 ...

  3. 详解反调试技术(转)

    反调试技术,恶意代码用它识别是否被调试,或者让调试器失效.恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间.为了阻止调试器的分析,当 ...

  4. android 反调试 方案,【木马分析】使用高级反调试与反HOOK的安卓恶意ROOT软件的深度分析(一):NATIVE层的调试...

    预估稿费:180RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 前言 最近,我们发现了一个新的Android rootnik恶意软件,它使用开源的Android root ...

  5. android 反调试 方案,Android Native反调试—检测TracerPid值

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? /proc/$pid/status中显示程序的pid等信息,程序正常运行时TracerPid为0.程序被调试后,Trac ...

  6. (69)番外 —— 编写一个简易的反调试引擎

    一.开发背景 这个项目是我用来检验所学知识的,它只适用于32位xp sp3 单核版本. 简单起见,我就不对引擎本身做保护了,假设引擎是神圣不可侵犯的. 二.功能介绍 应用层 TLS回调 常用的反调试A ...

  7. 反调试检测之一TracerPid

    当我们使用Ptrace方式跟踪一个进程时,目标进程会记录自己被谁跟踪,可以查看/proc/pid/status看到这个信息,下图展示的是使用ida进行调试的情况. Paste_Image.png Pa ...

  8. 安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断

    From( 模拟器检测实战分析 ):https://www.bilibili.com/video/BV1UE411A7rW?p=65 怎样过 app 的模拟器检测:https://bbs.pediy. ...

  9. iOS安全防护---越狱检测、二次打包检测、反调试

    最近在调研越狱设备的检测.防止APP被二次打包.防止反调试以及逆向工程,调研期间做了大量的测试来验证方案的可行性,花费了很多时间.所以,在此将调研结果总结一下,供大家参考. 一.越狱环境下,提高App ...

最新文章

  1. Spark-Java算子
  2. SLAM优化位姿时,误差函数的雅可比矩阵的推导。
  3. Apache solr(二).
  4. Winform中实现图片格式转换(附代码下载)
  5. 卷积层数据放大_卷积神经网络重要回顾
  6. 【Python爬虫学习笔记11】Queue线程安全队列和GIL全局解释器锁
  7. poj3981 字符串替换-字符串的基本操作
  8. css flexbox模型_CSS Flexbox在全国范围内的公路旅行中得到了解释
  9. [恢]hdu 1040
  10. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法
  11. python 3.6 MJ小工具
  12. 分布式内存文件系统Alluxio
  13. mysql 分号子查询_MySQL子查询详解
  14. array2xml xml2array
  15. 【OpenCV学习笔记】【函数学习】十一(读入图像﹑显示图像和保存图像)
  16. Python 利用 shutil 移动文件
  17. C#实现图片转字符画
  18. 写给新手看的机器学习原理--基于机器翻译
  19. 个人八股文集合一、C/C++语言
  20. [状压DP]帮助Bubu

热门文章

  1. 儿童猜词游戏图片_超实用的儿童社交游戏分享(听指令、认知、规则)
  2. python入门之控制结构-循环结构_Python 入门之控制结构 - 循环结构(一)
  3. Python之多线程:python多线程设计之同时执行多个函数命令详细攻略
  4. BlockChain:《区块链技术在医疗领域应用分析》—中投顾问《2016-2020年区块链技术深度调研及投资前景预测报告》听课笔记
  5. 成功解决File amp;quot;f:\program files\python\python36\lib\re.pyamp;quot;, line 142, in amp;lt;modul
  6. Py:Python实现好莱坞《黑客》影视中珠帘似吊炸天的华丽动态加密页面
  7. SleuthQL 一个自动化执行导出扫描结果的库
  8. sublime 插件
  9. 【LOJ】#2014. 「SCOI2016」萌萌哒
  10. JavaScript学习总结(二)数组和对象部分