摘要

针对现有代码混淆仅限于某一特定编程语言或某一平台,并不具有广泛性和通用性,以及控制流混淆和数据混淆会引入额外开销的问题,提出一种基于底层虚拟机(LLVM)的标识符混淆方法。该方法实现了4种标识符混淆算法,包括随机标识符算法、重载归纳算法、异常标识符算法以及高频词替换算法,同时结合这些算法,设计新的混合混淆算法。混淆方法首先在前端编译得到的中间文件中候选出符合混淆条件的函数名,然后使用具体的混淆算法进行处理,最后使用具体的编译后端将混淆后的文件转变为二进制文件。实验结果表明基于LLVM的标识符混淆方法适用于LLVM支持的语言,不影响程序正常功能,时空开销在1.5倍内,且标识符混淆程度稳定,平均混淆比率在77.5%。相较于已有的随机标识符混淆方法和重载混淆方法,具有性能开销小,隐蔽性强,通用性广的特点。