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

26种对付反调试的方法

发布时间:2019-03-22 04:10:04 所属栏目:建站 来源:luochicun
导读:副标题#e# 目前主要有3种分析软件的方法: 1.数据交换分析,研究人员使用数据包嗅探工具来分析网络数据交换。 2.对软件的二进制代码进行反汇编,然后以汇编语言列出。 3.字节码解码或二进制解码,然后以高级编程语言重新创建源代码。 本文针对的是Windows操

这是产生中断的指令, KiUserExceptionDispatcher函数是系统从内核模式调用到用户模式的回调方法之一。以下是它的签名:

  1. VOID NTAPI KiUserExceptionDispatcher( 
  2.     PEXCEPTION_RECORD pExcptRec,  
  3.     PCONTEXT ContextFrame 
  4. ); 

下面就是避开了应用KiUserExceptionDispatcher函数钩子的硬件断点检查的代码:

  1. typedef  VOID (NTAPI *pfnKiUserExceptionDispatcher)( 
  2.     PEXCEPTION_RECORD pExcptRec, 
  3.     PCONTEXT ContextFrame 
  4.     ); 
  5. pfnKiUserExceptionDispatcher g_origKiUserExceptionDispatcher = NULL; 
  6. VOID NTAPI HandleKiUserExceptionDispatcher(PEXCEPTION_RECORD pExcptRec, PCONTEXT ContextFrame) 
  7.     if (ContextFrame && (CONTEXT_DEBUG_REGISTERS & ContextFrame->ContextFlags)) 
  8.     { 
  9.         ContextFrame->Dr0 = 0; 
  10.         ContextFrame->Dr1 = 0; 
  11.         ContextFrame->Dr2 = 0; 
  12.         ContextFrame->Dr3 = 0; 
  13.         ContextFrame->Dr6 = 0; 
  14.         ContextFrame->Dr7 = 0; 
  15.         ContextFrame->ContextFlags &= ~CONTEXT_DEBUG_REGISTERS; 
  16.     } 
  17. __declspec(naked) VOID NTAPI HookKiUserExceptionDispatcher()  
  18. // Params: PEXCEPTION_RECORD pExcptRec, PCONTEXT ContextFrame 
  19.     __asm 
  20.     { 
  21.         mov eax, [esp + 4] 
  22.         mov ecx, [esp] 
  23.         push eax 
  24.         push ecx 
  25.         call HandleKiUserExceptionDispatcher 
  26.         jmp g_origKiUserExceptionDispatcher 
  27.     } 
  28. int main() 
  29.     HMODULE hNtDll = LoadLibrary(TEXT("ntdll.dll")); 
  30.     g_origKiUserExceptionDispatcher = (pfnKiUserExceptionDispatcher)GetProcAddress(hNtDll, "KiUserExceptionDispatcher"); 
  31.     Mhook_SetHook((PVOID*)&g_origKiUserExceptionDispatcher, HookKiUserExceptionDispatcher); 
  32.     return 0; 

在这个例子中,DRx寄存器的值在HookKiUserExceptionDispatcher函数中被复位,即在VEH处理程序调用之前。

NtSetInformationThread —从调试器隐藏线程

(编辑:西安站长网)

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

热点阅读