市面上的PHP代码加密方法主要分为:
预先加密,执行前解密。大部分个人开发的加密方法均属此类。这类方法存在根本性的缺陷,基本无保护效果。
使用这类方法加密的文件,执行时首先需要解密密文至源代码状态,再通过 eval() 等方法运行。这使得通过劫持 Zend 虚拟机的编译入口 zend_compile_string() 可以轻松拦截得到源代码。
编译代码,得到二进制形式的指令序列。代表有 Zend Optimizer 和 ionCube。这类方法需要服务器加装特定扩展。
Zend 和 ionCube 的加密程序是公开的,攻击者可以通过各种手段分析程序行为,反推得到编译规则,由此写出反编译程序,从而能够还原经过编译的代码。
转载请注明:PHP笔记 » PHP代码加密的两种主要方法