计算机科学
混淆
控制流程
逆向工程
软件
恶意软件
软件工程
程序设计语言
编码(集合论)
领域(数学)
内存安全
操作系统
计算机安全
数学
集合(抽象数据类型)
纯数学
作者
Pascal Junod,Julien Rinaldini,Johan Wehrli,Julie Michielin
摘要
Software security with respect to reverse-engineering is a challenging discipline that has been researched for several years and which is still active. At the same time, this field is inherently practical, and thus of industrial relevance: indeed, protecting a piece of software against tampering, malicious modifications or reverse-engineering is a very difficult task. In this paper, we present and discuss a software obfuscation prototype tool based on the LLVM compilation suite. Our tool is built as different passes, where some of them have been open-sourced and are freely available, that work on the LLVM Intermediate Representation (IR) code. This approach brings several advantages, including the fact that it is language-agnostic and mostly independent of the target architecture. Our current prototype supports basic instruction substitutions, insertion of bogus control-flow constructs mixed with opaque predicates, control-flow flattening, procedures merging as well as a code tamper-proofing algorithm embedding code and data checksums directly in the control-flow flattening mechanism.
科研通智能强力驱动
Strongly Powered by AbleSci AI