1. 反静态分析

  • 花指令:通过条件互补、固定值、滥用指针、滥用SEH等方式破坏反汇编代码
  • 动态加解密
  • 对抗反编译:通过push + retn替代jmp、在永不执行的代码处调整栈指针等方式使得Hex-Rays反编译器认为函数堆栈不平衡,拒绝反编译
  • 位数交叉编码:32位/64位交叉模式编码
  • Java/Python代码混淆
  • ollvm控制流平坦化

2. 反调试

  • 进程状态检测:检测BeingDebugged、NtGlobalFlag等
  • 调试环境检测:检测调试器窗口、进程、文件、内核对象等
  • 时钟检测:检测程序运行时长
  • 异常检测:调试器和常规程序对异常的处理存在差异
  • 断点检测:检测硬件断点/软件断点/单步标志位,检测代码段哈希
  • 自调试和多线程/进程逻辑互补
  • 通过调试器/插件漏洞检测或破坏

3. 反虚拟机

  • 虚拟机痕迹与指纹检测,常见于注册表、服务、进程、文件、网卡Mac地址、CPUID、主板/磁盘型号、内核模块等
  • 特权指令:一些特权指令如sidt、sgdt、sldt、cpuid、in等,由于性能和硬件模拟等原因虚拟化不完善,这些指令在虚拟机和物理机中运行时会返回不同的结果
  • 社会工程学:检测电脑中常用软件、逆向分析工具、历史文档、临时文件数量、开机时间、内存大小等
  • 虚拟机漏洞逃逸与破坏

4. 反沙箱

  • 人工操作互动触发恶意行为
  • 延迟运行/特定时间点运行:沙箱检测时间一般较短
  • IF分支混淆:对抗分支预测与追踪技术