rsa是公钥加密,速度慢,只能处理少量数据,优点是公钥即使在不安全的网络上公开,也能保证安全
可以加密就可以解密.
解密ZEND加密后的PHP文件:
zend加密php文件解密工具Dezender可以做到.
然后就可以看见文件目录下面会多出一个文件 ? ?文件名.de.php
第一段:无需任何PHP扩展的加密
此类加密的代表有 威盾PHP加密专家、PHP在线加密平台、PHP神盾 等.
此类加密都是以eval函数为核心,辅以各式各样的字符串混淆和各种小技巧,来达到加密目的(更准确的说,应该算是混淆).下面以一个简单的hello world为例来说明此类加密的大体过程.
php
echo "hello world";
首先 ,我们把这段代码变为通过eval执行的
eval('echo "hello world";');
就这样子,我们的第一个加密过的php代码新鲜出炉了...
上面这个例子非常非常简单,基本上任何有一点php语言基础甚至别的语言基础的人都能轻松的看懂并解密.所以呢,我们需要一些方法让这个加密至少看上去不是那么简单.
第二段:同时采用多种编码函数
这儿所说的特定字符是一些极其相似的字符,如I和1,0和O.试想一下满屏都是O和0组成的变量,并且每一个的名字长度都在10个字符以上... 判断文件自身是否被修改
这个功能看似容易,对文件做一下摘要再进行下对比即可知道是否被修改了,但是如何才能在文件内把摘要嵌入进去呢?我没有找到完美的方案,但一个变通的方案还是很容易的...
exit('file edited');
}
当然,你可以把这个校验字符串放在别的位置来提高破解的难度.有了这个,别人想破解你的程序可就得多费一点功夫了...
既然知道了原理,那解密自然也就非常简单了,总体来说就三步:
把eval替换为输出,比如echo 根据编码规则把字符串还原 如果文件未解密完全,从第一步开始继续
Zend Guard是目前市面上最成熟的PHP源码加密产品.
经过本人搜集资料,亲身测试后,总结了如何利用Zend Guard对PHP文件进行加密,以及如何利用Zend Loader对加密后的PHP文件进行解密.
Zend Guard的安装及破解
破解需要注意以下几点:
如何使用Zend Guard进行加密?
弹出如下的对话框:
本步骤是选择要加密的文件,可以是单个文件[Add File]或整个文件夹[Add Folder],然后[Next].
(此处,我选择的是对整个文件夹进行加密.即 D:\wamp\www\demo 里的所有文件进行加密.)
如此,就实现了对PHP源码的最简单的加密.
我们可以在产品的输出目录(D:\productDir)里,看到加密后的文件.
可以看出,产品输出目录里的PHP文件已被加密了.
这种最简单的加密方式,我们并没有设置加密的有效期,也没有设置许可证支持(即解密时,是否需要许可证文件),默认是永不过期,不需要解密许可文件.
Zend Loader 解密
上面我们已经对PHP代码进行了最简单的加密(编码),加密后生成的PHP源代码,就不能再被web服务器上的PHP模块解析了.
当我们将加密后的php文件放到web服务器上执行时,会显示如下信息:
Zend Guard Run-time support missing!
One more more files on this web site were encoded by ZendGuard and the required run-time support is not installed orproperly configured.
......
原来,加密后的php代码需要ZendGuardLoader模块才能正常运行.
[Zend.loader],
zend_loader.enable=1
zend_loader.disable_licensing=1
zend_loader.license_path=
注:
zend_loader.enable 表示是否启用zend loader,1表示启用,0表示禁用
zend_loader.disable_licensing 表示是否禁用许可证,1表示禁用,0表示不禁用 (由于上面我加密php文件的时候,没有设置许可证支持,故解密时,禁用许可证)
zend_loader.obfuscation_level_support 表示代码混淆级别
zend_loader.license_path 指定许可证文件的路径
zend_extension 指定zend loader 扩展文件 的路径
配置完成后,重启wampserver,如果您的php的版本是NTS(非线程安全的话),就可以正常执行加密后的PHP文件了.
如何查看安装好的PHP的版本及PHP是否已经成功支持Zend Loader?
通过查看 phpinfo() 函数的输出信息,利用 Ctrl ◆ F 快速查找关键字Thread Safety 和 Zend Guard Loader.
可以看到,Thread Safety 对应的值为disabled,就说明该php的版本是 NTS (非线程安全)的,否则就是TS版本的.
再往下面看,还可以查看 Zend Guard Loader 的配置信息,如下:
到此,整个 Zend Guard 加密和 Zend Guard Loader 解密,就介绍完毕了.
温馨提示: 为了顺利实现PHP代码的zend加密和解密,建议使用PHP官网上主流的PHP的NTS版和Zend官网上对应的Zend Guard加密软件、 Zend Guard Loader解密插件.
相关附件:
Zend