加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

26种对付反调试的方法

发布时间:2019-03-22 03:36:50 所属栏目:建站 来源:luochicun
导读:今朝首要有3种说明软件的要领: 1.数据互换说明,研究职员行使数据包嗅探器材来说明收集数据互换。 2.对软件的二进制代码举办反汇编,然后以汇编说话列出。 3.字节码解码或二进制解码,然后以高级编程说话从头建设源代码。 本文针对的是Windows操纵体系中

链中的最后一部门是体系分派的默认处理赏罚措施。假如早年没有非常的处理赏罚措施,则体系处理赏罚措施将转到注册表以获取

  1. HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionAeDebug 

按照AeDebug密钥值,应用措施将被终止或节制被传送到调试器。调试器路径应在调试器REG_SZ中指示。

在建设新历程时,体系会向其添加首要SEH Frame。主SEH Frame的处理赏罚措施也由体系界说。首要的SEH Frame自己险些位于最初为历程分派的仓库内存中。 SEH处理赏罚函数署名如下所示:

  1. typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) ( 
  2.     __in struct _EXCEPTION_RECORD *ExceptionRecord, 
  3.     __in PVOID EstablisherFrame, 
  4.     __inout struct _CONTEXT *ContextRecord, 
  5.     __inout PVOID DispatcherContext 
  6.     ); 

假如正在调试应用措施,在int 3h间断天生后,节制将被调试器拦截。不然,,节制将被转移

到SEH处理赏罚措施。以下代码就是基于SEH Frame的反调试掩护:

  1. BOOL g_isDebuggerPresent = TRUE; 
  2. EXCEPTION_DISPOSITION ExceptionRoutine( 
  3.     PEXCEPTION_RECORD ExceptionRecord, 
  4.     PVOID             EstablisherFrame, 
  5.     PCONTEXT          ContextRecord, 
  6.     PVOID             DispatcherContext) 
  7.     g_isDebuggerPresent = FALSE; 
  8.     ContextRecord->Eip += 1; 
  9.     return ExceptionContinueExecution; 
  10. int main() 
  11.     __asm 
  12.     { 
  13.         // set SEH handler 
  14.         push ExceptionRoutine 
  15.         push dword ptr fs:[0] 
  16.         mov  dword ptr fs:[0], esp 
  17.         // generate interrupt 
  18.         int  3h 
  19.         // return original SEH handler 
  20.         mov  eax, [esp] 
  21.         mov  dword ptr fs:[0], eax 
  22.         add  esp, 8 
  23.     } 
  24.     if (g_isDebuggerPresent) 
  25.     { 
  26.         std::cout << "Stop debugging program!" << std::endl; 
  27.         exit(-1); 
  28.     } 
  29.     return 0 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读