无名侠 发表于 2014-2-22 13:45:01

反调试技术 - 触发异常实现方法

小甲鱼的反调试技术这篇文章让我受益匪浅啊,转过去看
看着 触发异常的方法 这个方法非常不错,所以就实验了一下。
完全代码如下:
呵呵,被调试器调试的话 程序会自动崩溃掉。
#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;
}

jiangyuming0434 发表于 2014-2-22 14:47:43

鱼哥怎么看!

牡丹花下死做鬼 发表于 2014-2-22 14:56:57

学习学习 O(∩_∩)O~

枫界易城 发表于 2014-2-22 15:00:03

好高深啊,,,,
页: [1]
查看完整版本: 反调试技术 - 触发异常实现方法