混淆代码分析与反混淆技术解析
1. 代码混淆与反分析基础
在代码安全领域,为防止程序被逆向工程分析,开发者会采用各种反逆向工程技术。比如Shiva程序,它通过创建子进程并让子进程立即附加到父进程的方式来进行自我保护。若附加操作失败,Shiva会终止运行,因为它假定有调试器在监控其进程;若操作成功,其他调试器就无法附加到Shiva进程,从而保证程序能在不被观察的情况下继续运行。而且,在这种运行模式下,两个Shiva进程可以相互改变对方的状态,这使得使用静态分析技术很难确定Shiva二进制文件的确切控制流路径。
当面对这些被混淆的程序时,如何进行分析是一个挑战。由于反逆向工程技术同时针对静态和动态分析工具,所以没有一种通用的解决方案适用于所有情况。分析方案通常取决于分析者的技能和可用工具:
- 如果选择调试器作为分析工具,需要制定策略来绕过调试器检测和预防保护机制。
- 如果偏好使用反汇编器,就需要制定策略来获得准确的反汇编结果,并且在遇到自修改代码时,要模拟代码的行为以正确更新反汇编列表。
2. 基于脚本的静态反混淆技术
Ghidra是一款功能强大的工具,可用于反汇编多种处理器的二进制文件。在实际分析中,常遇到要分析的二进制文件与运行Ghidra的平台不同的情况,比如在macOS上运行Ghidra却要分析Linux x86二进制文件,或者在x86平台上分析MIPS或ARM二进制文件。此时,可能无法使用合适的动态分析工具(如调试器)。当二进制文件通过对程序部分进行编码来实现混淆时,就只能创建Ghidra脚本来模拟程序的反混淆阶段,从而正确解码程序并反汇编解码后的指令和数据。
下面以使用Burneye ELF加密工具加密的
超级会员免费看
订阅专栏 解锁全文
2113

被折叠的 条评论
为什么被折叠?



