软件混淆引入的代码复用小工具深度分析
在当今数字化时代,软件安全至关重要。软件混淆技术常被用于抵御恶意逆向工程,但近期研究表明,它可能引入代码复用攻击的潜在漏洞。本文将深入探讨软件混淆对代码复用小工具的影响,并提出相应的缓解策略。
1. 背景知识
在深入研究之前,我们需要了解两个关键概念:代码混淆和代码复用攻击。
1.1 代码混淆
代码混淆是将正常程序转换为语义等效但更复杂的形式,使逆向分析变得困难,从而保护专有代码。常见的混淆工具如 Tigress、Obfuscator - LLVM、VMProtect 和 Code Virtualizer 采用了多种混淆方案,具体如下表所示:
| 类型 | 描述 |
| — | — |
| 控制流扁平化 | 将程序的控制流转换为循环内的扁平调度结构,由一个变量决定程序的下一步。循环内的代码为线性风格,无分支。 |
| 指令替换 | 用更复杂但等效的形式替换一条指令,可能会引入额外的中间步骤指令。例如, x | y ⇒(x ∧y) | (x ⊕y) |
| 虚假控制流 | 在不改变原程序语义的情况下插入虚拟路径条件,通常虚拟分支会随机填充垃圾代码。 |
| 虚拟化 | 创建自定义虚拟机(VM),将原程序转换为 VM 的字节码,程序行为隐藏在复杂的 VM 执行中,是最复杂的混淆方法之一。 |
| 即时动态编译 | 将程序转换为一系列自定义的中间代表指令,新代码部分在运行时动态编译为机器代码。 |
| 自修改 | 在程序中插入特殊代码模式,可在运行时改变程序其他具有相同功能的部分。 |
| 组件编码 | 将
超级会员免费看
订阅专栏 解锁全文
4117

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



