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

26种对付反调试的方法

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

从Windows XP开始,研究职员就为调试进程建设了调试工具。以下就是搜查当前历程调试工具的案例:

  1. status = NtQueryInformationProcess( 
  2.             GetCurrentProcess(), 
  3.             ProcessDebugObjectHandle, 
  4.             &hProcessDebugObject, 
  5.             sizeof(HANDLE), 
  6.             NULL); 
  7. if (0x00000000 == status && NULL != hProcessDebugObject) 
  8.     std::cout << "Stop debugging program!" << std::endl; 
  9.     exit(-1); 

假若有调试工具,则正在调试该历程。

ProcessDebugFlags

当搜查该标识时,它会返回到EPROCESS内核布局的NoDebugInherit位的反转值。假如NtQueryInformationProcess函数的返回值为0,则正在调试历程。以下就是一个这样的反调试搜查的例子:

  1. status = NtQueryInformationProcess( 
  2.     GetCurrentProcess(), 
  3.     ProcessDebugObjectHandle, 
  4.     &debugFlags, 
  5.     sizeof(ULONG), 
  6.     NULL); 
  7. if (0x00000000 == status && NULL != debugFlags) 
  8.     std::cout << "Stop debugging program!" << std::endl; 
  9.     exit(-1); 
  10. }    

ProcessBasicInformation

当行使ProcessBasicInformation标识挪用NtQueryInformationProcess函数时,会返回PROCESS_BASIC_INFORMATION布局:

  1. typedef struct _PROCESS_BASIC_INFORMATION { 
  2.     NTSTATUS ExitStatus; 
  3.     PVOID PebBaseAddress; 
  4.     ULONG_PTR AffinityMask; 
  5.     KPRIORITY BasePriority; 
  6.     HANDLE UniqueProcessId; 
  7.     HANDLE InheritedFromUniqueProcessId; 
  8. } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; 

(编辑:湖南网)

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

热点阅读