代码混淆(Code Obfuscation),理学-计算机科学技术-信息安全-信息系统安全-软件安全-软件安全防御,一种用于对抗软件逆向分析的软件保护技术。代码混淆(code obfuscation)是对软件进行的保留语义代码变换,变换后的程序和原来的程序在功能上保持不变,但增加了非授权逆向工程对软件实施攻击的难度。根据混淆原理和对象的不同,代码混淆技术可分为词法(syntax)混淆和语法(semantics)混淆。二者的主要区别在于:词法混淆通过消除或扰乱程序代码中用于辅助逆向分析工具识别各类程序元素的符号表达的方式实施混淆,主要目的在于令经过混淆的程序代码晦涩难懂、增加对其进行人工解析的复杂度和工作量;而语法混淆则通过对程序代码实施特殊语义保留变换的方式、使得软件逆向分析技术/工具因自身所存在的缺陷而无法正确地解析加固后程序的执行逻辑。因此,词法混淆仅改变程序代码的表现形式,而完全不影响其执行逻辑;语法混淆则会在保留程序实际语义的前提下,对其执行逻辑进行等效变换。自动化的代码混淆工具在软件开发中已经得到了广泛应用。