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

抵抗静态分析技术的实现与反制:
抵抗动态分析的手段:
而对动态分析的防护则可以采取检测程序是否处于调试环境(其中包括扫描进程、检测特殊API、检测运行速度和代码段自检等方法)以及反调试等措施。
1.检测调试环境的手段:
- 扫进程
- 检测特殊标志:(相关API)
- IsDebuggerPresent( ):原理分析
- CheckRemoteDebuggerPresent( )
- NtGlobalFlag
- 检测运行速度:

DWORD GetTickCount(void);从操作系统启动到现在所经过(elapsed)的毫秒数
- 异常

- 代码段自检:int 3(0xCC)
- 自校验:对代码段进行校验,如果检测到校验和不是之前的值就报错
2.反调试技术:
- 反调试意在通过检测调试器等方法避免程序被调试分析。
- 比如使用一些API函数如IsDebuggerPresent检测调试器,使用 SEH异常处理,时间差检测等方法。也可以通过覆写调试端口、 自调试等方法进行保护。
- 作者:Reveone
- 链接:http://www.reveone.cn/article/3e3874f2-fa7d-4fad-9d32-c1b644ebdc83
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。