*Result*: 基于分段函数的不透明谓词.
*Further Information*
*As a software protection technology, code obfuscation enhances the complexity of the program while ensuring the invariance of the program semantics to counteract reverse engineering. The opaque predicate technology constructs false control flow to hide the real execution logic of the program without increasing the time and space over-head of the original program. In view of the problem that the current opaque predicate technology cannot resist the dynamic symbolic execution technology and the control flow of the obfuscation program is relatively simple, this study proposes an opaque predicate based on piecewise functions. It attacks the defects existing in dynamic symbolic execution, and makes the introduced variables converge to the set values by using piecewise functions to construct opaque predicates and hide the real control flow of the program. The proposed obfuscation system is implemented based on the LLVM(Low Level Virtual Machine) framework, and experimental detection is carried out. The experimental results show that the proposed obfuscation method effectively increases the complexity of the program control flow and can resist the dynamic symbolic execution technology. Compared with the existing obfuscation systems, the proposed method reduces the maintainability of the program by an average of 23.8%, and has a higher obfuscation intensity. [ABSTRACT FROM AUTHOR]*
*作为一种软件保护技术, 代码混淆在保证程序语义不变的前提下通过增强程序的复杂性来对抗逆向工程。 不透明谓词技术通过构造虚假控制流在不增加原程序时空开销的前提下隐藏程序真实的执行逻辑。针对当前不透明谓词技术无法对抗动态符号执行技术以及混淆后程序控制流较简单问题, 文中提出了一种基于分段函数的不透明谓词。 攻击动态符号执行存在的缺陷, 利用分段函数使引入的变量收敛于设定值, 以此构造不透明谓词, 隐藏程序真实控制流。 基于 LLVM (Low Level Virtual Machine) 框架实现了所提混淆系统, 并进行了实验检测。实验结果表明, 所提混淆方法有效增加了程序控制流的复杂度, 能够抵御动态符号执行技术。相较于现有混淆系统, 所提方法使程序的可维护度平均下降 23.8%, 具有更高的混淆强度. [ABSTRACT FROM AUTHOR]*