-
-
[讨论]反调试1:自身设置一个异常,让调试器捕获,并使自身崩溃达到反调试
-
发表于: 2023-3-20 17:26 5203
-
#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
赞赏
他的文章
- [讨论]这种call咋调用 3194
- [讨论]隐藏内存可执行属性问题 2456
- [讨论]注入的时候把分配地址拆分进行分配 1967
- VSbug,概率闪退 1940
- [讨论][讨论]Unity_Mono 子弹追踪分析1 2606
看原图
赞赏
雪币:
留言: