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

26种对付反调试的方法

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

在IA-32架构中,有一个特定的指令 – int 3h,带有0xCC操作码,用于调用调试句柄。当CPU执行该指令时,会产生中断并将控制传输到调试器。为了达到控制的目的,调试器必须将int 3h指令注入到代码中。要检测断点,我们可以计算函数的校验和。

  1. DWORD CalcFuncCrc(PUCHAR funcBegin, PUCHAR funcEnd) 
  2.     DWORD crc = 0; 
  3.     for (; funcBegin < funcEnd; ++funcBegin) 
  4.     { 
  5.         crc += *funcBegin; 
  6.     } 
  7.     return crc; 
  8. #pragma auto_inline(off) 
  9. VOID DebuggeeFunction() 
  10.     int calc = 0; 
  11.     calc += 2; 
  12.     calc <<= 8; 
  13.     calc -= 3; 
  14. VOID DebuggeeFunctionEnd() 
  15. }; 
  16. #pragma auto_inline(on) 
  17. DWORD g_origCrc = 0x2bd0; 
  18. int main() 
  19.     DWORD crc = CalcFuncCrc((PUCHAR)DebuggeeFunction, (PUCHAR)DebuggeeFunctionEnd); 
  20.     if (g_origCrc != crc) 
  21.     { 
  22.         std::cout << "Stop debugging program!" << std::endl; 
  23.         exit(-1); 
  24.     } 
  25.     return 0; 

(编辑:西安站长网)

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

热点阅读