【讨论】一个简单反调试的实现(兼容WIN32/WIN64)
原帖网址:http://www.vbasm.com/thread-8294-1-1.html原作者:@美俪女神
转载请注明出处。
直接上代码,主要原理是根据处理异常的时间长短判断是否存在调试器。
在有调试器的情况下,异常处理的时间远比正常情况要长。#include <stdio.h>
#include <Windows.h>
int main()
{
DWORD t1,t2;
//测试GetTickCount的有效性,如果无效则表示发现调试器
t1=GetTickCount();
Sleep(500);
t2=GetTickCount();
if(t2-t1<400)
puts("FIND DBG\n");
else
puts("NO DBG\n");
//故意引发异常查找调试器
t1=GetTickCount();
__try
{
memcpy((PVOID)1234,(PVOID)5678,90);
//DebugBreak();
}
__except(1)
{
t2=GetTickCount();
puts("goto __except!\n");
}
if(t2-t1>10)
puts("FIND DBG");
else
puts("NO DBG");
getchar();
return 0;
}这东西在WIN32上当然过不了SOD,但是在WIN64上很好用。{:soso_e113:}
不过在产品上实现反调试,当然不需要我们费劲:**** Hidden Message ***** 隐藏了什么内容? 白加黑治感冒疗效好 算另类么? come here to study 一定要回复
页:
[1]