中文

Java 中静态控制流混淆技术的系统性研究

密码学与安全 2018-10-01 v1

摘要

控制流混淆(CFO)在不改变程序语义的前提下改变程序的控制流路径。现有文献已提出若干技术;然而,一项快速调研显示,所提出技术的类型及其独特性程度均缺乏清晰界定。同样不明确的是,CFO 的理论与实践之间是否存在差距。本文系统性地研究了针对 Java 程序提出的 CFO 技术,涵盖学术论文与商业可用工具。我们使用一个包含 16 个具有不同软件特征及不同混淆器参数的程序的数据集,对 13 个混淆器进行评估。每个程序均经过细致的逆向工程以研究混淆的效果。我们的研究揭示,文献中提出了 36 种独特技术,工具中提出了 7 种。最流行的三款商业混淆器仅实现了文献中 36 种技术里的 13 种。因此,CFO 的理论与实践之间似乎存在差距。我们基于程序中被变换的底层组件,提出了一种新颖的混淆技术分类法。我们从人工分析员与自动化程序反编译器的角度,识别出对逆向工程攻击具有强抵抗力的技术。我们的分析表明,大多数工具并未实现这些技术,从而削弱了混淆所提供的保护。我们给出了若干选定技术的示例并讨论了我们的发现。据我们所知,我们是首个开展此类研究的。本研究将有助于软件设计者根据需求决定最佳使用技术,帮助研究者理解当前技术水平,并助力商业混淆器开发者开发新技术。

关键词

引用

@article{arxiv.1809.11037,
  title  = {A Systematic Study on Static Control Flow Obfuscation Techniques in Java},
  author = {Renuka Kumar and Anjana Mariam Kurian},
  journal= {arXiv preprint arXiv:1809.11037},
  year   = {2018}
}

备注

20 pages, 3 tables