type
status
date
slug
summary
tags
category
icon
password
前言:逆向分析程序主要采用两种手段:动态分析和静态分析。而针对程序的保护也主要通过这两个方向。

抵抗静态分析的手段:

抵抗静态分析的方法包括:SMC花指令加壳代码混淆等技术。
  • SMC:即Self Modifying Code,动态代玛加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。
  • 花指令:是利用反汇编工具本身的漏洞,在原本真正的程序指令中混合大量无用的代码,是的反汇编程序无法正确的反汇编出原来的程序代码。
  • 加壳:加壳技术是将应用程序的代码封装在一个可执行文件中,以阻止攻击者破解。
  • 代码混淆技术:代码混淆是将计算机程序的代码,转换成一种功能上等价,但是难以阅读和理解的形式的行为
    • notion image

抵抗静态分析技术的实现与反制:

抵抗动态分析的手段:

而对动态分析的防护则可以采取检测程序是否处于调试环境(其中包括扫描进程、检测特殊API、检测运行速度和代码段自检等方法)以及反调试等措施。

1.检测调试环境的手段:

  • 扫进程
  • 检测特殊标志:(相关API)
    • IsDebuggerPresent( ):原理分析
    • CheckRemoteDebuggerPresent( )
    • NtGlobalFlag
  • 检测运行速度:
    • notion image
      DWORD GetTickCount(void);从操作系统启动到现在所经过(elapsed)的毫秒数
  • 异常
    • notion image
  • 代码段自检:int 3(0xCC)
  • 自校验:对代码段进行校验,如果检测到校验和不是之前的值就报错

2.反调试技术:

  • 反调试意在通过检测调试器等方法避免程序被调试分析。
  • 比如使用一些API函数如IsDebuggerPresent检测调试器,使用 SEH异常处理,时间差检测等方法。也可以通过覆写调试端口、 自调试等方法进行保护。
RFID技术浅析恶意代码分析