首页
社区
课程
招聘
[讨论]反调试1:自身设置一个异常,让调试器捕获,并使自身崩溃达到反调试
2023-3-20 17:26 4690

[讨论]反调试1:自身设置一个异常,让调试器捕获,并使自身崩溃达到反调试

2023-3-20 17:26
4690

#include <windows.h>

 

#include<stdio.h>
EXTERN_C void myFuntion();//x64内联汇编声明外部函数
long callback(_EXCEPTION_POINTERS excp)
{
excp->ContextRecord->Rcx = 1;/
调试器附加后,默认会接管这个异常,(不接管那没办法,所以这是比较low的反调试)则我们注册的这个异常处理函数会失效,那因为这个异常,调试器一般没有应对处理办法,就会return EXCEPTION_SEARCH_FOR ,操作系统会接着找有没有异常处理函数,因为我们那个异常处理函数失效所以没有办法,程序只能崩溃,这样达到反调试。这个异常是除以零,那我们自己处理异常把被除数rcx改成非零即可*/
return EXCEPTION_CONTINUE_EXECUTION;//意思是自己处理好了异常让自身程序接着跑
}
int main()
{
SetUnhandledExceptionFilter(callback);//注册一个异常处理函数,一定是这个异常处理函数,因为veh,即使调试器附加后不会失效

1
2
3
4
5
6
7
while (1)
{
    printf("Funtion Address is %p\n", myFuntion);
    myFuntion();
    Sleep(1000);
}
return 0;

}

 

//内联汇编代码
.CODE

 

myFuntion PROC
xor rdx,rdx
xor rcx,rcx
mov rax,10
idiv rcx
ret
myFuntion ENDP

 

END


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回