反调试技术 - 触发异常实现方法
小甲鱼的反调试技术这篇文章让我受益匪浅啊,转过去看看着 触发异常的方法 这个方法非常不错,所以就实验了一下。
完全代码如下:
呵呵,被调试器调试的话 程序会自动崩溃掉。
#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
diveax
}
//实际上被调试的话 程序已经崩溃了!!
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;
}
鱼哥怎么看! 学习学习 O(∩_∩)O~ 好高深啊,,,,
页:
[1]