Standard Control Flow Flattening is fundamentally broken
4 days ago
- #reverse engineering
- #code obfuscation
- #static analysis
- 控制流平坦化(CFF)在OLLVM/Hikari中由于依赖数据区的调度表、可写的状态变量和混合布尔算术(MBA)常量,在结构上易受静态分析攻击,这些特征无需动态分析即可识别。
- CFFDispatchTracer是一个Ghidra脚本,通过扫描特定模式、利用这些不变性,并迭代构建知识库,自动解析CFF调度条目,在测试的二进制文件中恢复率达到95.8%。
- 测试的商业防篡改/防欺诈SDK(包括一个1.2MB的防欺诈SDK)在几小时内被完全反混淆,揭示出复杂的混淆通常仅掩盖简单的操作(如令牌透传)。
- 相比代码虚拟化或服务器端认证等替代方案,CFF较弱,但由于其低开销和开源可用性仍被广泛部署,造成了一种虚假的安全感。
- 供应商应采用更强大的技术(如代码虚拟化、多样化构建或临时代码生成),以提供超越CFF的有效防篡改保护。