一种简易的反调试手段
本帖最后由 tangptr@126.com 于 2018-7-6 13:08 编辑原理很简单,就是利用调试陷阱中断(int 2d指令)结合SEH异常捕获实现。
只需要把
__asm int 0x2d
这行代码放进try-catch块里即可,代码如下:
void Main()
{
__try
{
__asm int 0x2d
printf("Debugger detected!\n");
}
__except(1)
{
printf("Debugger not detected!\n");
}
system("pause");
}
当执行到int 2d的时候,发生调试陷阱异常,若有调试器则被调试器捕获,若无调试器则被SEH捕获。当调试器捕获调试陷阱异常时,恢复执行后不会进入SEH异常处理,从而实现检测调试器。
经测试成功检测到了windbg,但无法测试OD,打开OD全是乱码233333
这种方法对VS调试器无效,因为它不捕获这个异常。 善哉,善哉:lol 传统反调试手段基本都被研究透了。你说的这个我记得10年前的一个『反反调试插件』就已经把它ANTI了。
页:
[1]