代码混淆 代码混淆Obfuscation是将计算机程序的源代码或機器碼转换成功能上等价但是难于阅读和理解的形式的行为 代码混淆可以用于程序源代码也可以用于程序编译而成的中间代码执行代码混淆的程序被称作代码混淆器目前已经存在许多种功能各异的代码混淆器 其主要工作有 将代码中的各种元素如变量函数类的名字改写成无意义的名字比如改写成单个字母或是简短的无意义字母组合甚至改写成这样的符号使得阅读的人无法根据名字猜测其用途 重写代码中的部分逻辑将其变成功能上等价但是更难理解的形式比如将for循环改写成while循环将循环改写成递归精简中间变量等等 打乱代码的格式比如删除空格将多行代码挤到一行中或者将一行代码断成多行等等 添加花指令通过特殊构造的指令来使得反編譯器或反汇编器出错进而干扰反编译工作的进行 代码混淆器也会带来一些问题主要的问题包括 被混淆的代码难于理解因此调试也变得困难起来开发人员通常需要保留原始的未混淆的代码用于调试 对于支持反射的语言代码混淆有可能与反射发生冲突 代码混淆并不能真正阻止反向工程只能增大其难度因此对于对安全性要求很高的场合仅仅使用代码混淆并不能保证源代码的安全