论文标题
ropfuscator:与ROP的强大混淆
ROPfuscator: Robust Obfuscation with ROP
论文作者
论文摘要
软件混淆在保护软件中的知识产权免受反向工程尝试中起着至关重要的作用。尽管某些混淆技术源于混淆 - 逆向工程武器竞赛,而另一些则源自不同的研究领域,例如二进制软件剥削。以返回为导向的编程(ROP)作为记忆错误漏洞最有效的开发技术之一。 ROP干扰了我们对过程控制流的自然感知,激发了我们重新利用ROP作为软件混淆的强大而有效的形式。尽管以前的工作已经探索了ROP作为一种混淆技术的有效性,但不断发展的逆向工程研究提高了有必要的推理,以了解基于ROP的机制针对Man-At-End-End(Mate)攻击的优势和局限性。为此,我们提出了Ropfuscator,这是基于ROP的编译器驱动的混淆通行证,用于LLVM支持的任何编程语言。我们结合了不透明的谓词和常数,以及一种新颖的指导隐藏技术来承受复杂的伴侣攻击。更重要的是,我们介绍了一种现实而统一的威胁模型,以彻底评估Ropfuscator,并为基于ROP的混淆技术提供原则推理,以回答代码覆盖率,开销,正确性,鲁棒性和实践挑战。
Software obfuscation plays a crucial role in protecting intellectual property in software from reverse engineering attempts. While some obfuscation techniques originate from the obfuscation-reverse engineering arms race, others stem from different research areas, such as binary software exploitation. Return-oriented programming (ROP) gained popularity as one of the most effective exploitation techniques for memory error vulnerabilities. ROP interferes with our natural perception of a process control flow, inspiring us to repurpose ROP as a robust and effective form of software obfuscation. Although previous work already explores ROP's effectiveness as an obfuscation technique, evolving reverse engineering research raises the need for principled reasoning to understand the strengths and limitations of ROP-based mechanisms against man-at-the-end (MATE) attacks. To this end, we present ROPfuscator, a compiler-driven obfuscation pass based on ROP for any programming language supported by LLVM. We incorporate opaque predicates and constants and a novel instruction hiding technique to withstand sophisticated MATE attacks. More importantly, we introduce a realistic and unified threat model to thoroughly evaluate ROPfuscator and provide principled reasoning on ROP-based obfuscation techniques that answer to code coverage, incurred overhead, correctness, robustness, and practicality challenges.