找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2350|回复: 3

一种简易的反调试手段

[复制链接]
发表于 2018-7-6 13:08:10 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 tangptr@126.com 于 2018-7-6 13:08 编辑

原理很简单,就是利用调试陷阱中断(int 2d指令)结合SEH异常捕获实现。
只需要把
  1. __asm int 0x2d
复制代码

这行代码放进try-catch块里即可,代码如下:
  1. void Main()
  2. {
  3.         __try
  4.         {
  5.                 __asm int 0x2d
  6.                 printf("Debugger detected!\n");
  7.         }
  8.         __except(1)
  9.         {
  10.                 printf("Debugger not detected!\n");
  11.         }
  12.         system("pause");
  13. }
复制代码

当执行到int 2d的时候,发生调试陷阱异常,若有调试器则被调试器捕获,若无调试器则被SEH捕获。当调试器捕获调试陷阱异常时,恢复执行后不会进入SEH异常处理,从而实现检测调试器。
经测试成功检测到了windbg,但无法测试OD,打开OD全是乱码233333
这种方法对VS调试器无效,因为它不捕获这个异常。
回复

使用道具 举报

发表于 2018-7-6 13:11:50 | 显示全部楼层
善哉,善哉
回复

使用道具 举报

发表于 2018-7-6 15:33:58 | 显示全部楼层
传统反调试手段基本都被研究透了。你说的这个我记得10年前的一个『反反调试插件』就已经把它ANTI了。

点评

吐槽犀利度: 5.0
吐槽犀利度: 5
嗯,最近在挖坟,所以翻出了这些古董。  发表于 2018-7-6 16:29
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-21 21:17 , Processed in 0.029404 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表