马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼的反调试技术这篇文章让我受益匪浅啊,转过去看
看着 触发异常的方法 这个方法非常不错,所以就实验了一下。
完全代码如下:
呵呵,被调试器调试的话 程序会自动崩溃掉。#include <stdio.h>
#include <windows.h>
LONG WINAPI debug_kill(
_In_ struct _EXCEPTION_POINTERS *ExceptionInfo
);
bool isDebug=true;
void main()
{
SetUnhandledExceptionFilter(debug_kill);
_asm
{
xor eax,eax
div eax
}
//实际上被调试的话 程序已经崩溃了!!
if (isDebug)
{
printf("被调试!!!");
getchar();
exit(-1);
}
getchar();
}
LONG WINAPI debug_kill(
_In_ struct _EXCEPTION_POINTERS *ExceptionInfo
)
{
printf("error!!");
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)
ExceptionInfo->ContextRecord->Eax);
// 修改寄存器eip的值
ExceptionInfo->ContextRecord->Eip += 2;
isDebug=false;
// 告诉操作系统,继续执行进程剩余的指令(指令保存在eip里),而不是关闭进程
return EXCEPTION_CONTINUE_EXECUTION;
}
|