|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|