PHP代码保护--Zend Guard的使用详解
前端之家收集整理的这篇文章主要介绍了
PHP代码保护--Zend Guard的使用详解,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Zend Guard的作用,就是用编译处理的方式来保护PHP源代码免于被反编译查看、未经授权的定制修改、未经许可的使用和重新发布等。而且,它是PHP的东家Zend公司开发的,是完全为PHP量身定做的保护神。
下面,请大家就和我一起来学习使用Zend Guard,加密保护我们的PHP源代码吧。
下载:
http://www.zend.com/en/products/guard/接下来让我们准备一个简单的
PHP程序test.
PHP,用来测试能否被Zend Guard保护起来。test.
PHP的
代码如下:
<div class="codetitle">
<a style="CURSOR: pointer" data="37316" class="copybut" id="copybut37316" onclick="doCopy('code37316')"> 代码如下: <div class="codebody" id="code37316">
<?
PHP PHPinfo();
?>
打开Zend Guard,从File(
文件)
菜单点击,新建一个项目,如图1所示。点击Next进入目录和
文件添加界面,因为我们只是测试一个
文件,所以点Add File将test.
PHP添加进来,再点击Finish(完成)即可
生成项目。
这时,Zend Guard会
自动打开新建立的项目,在界面的左边列出项目中的
文件,右边列出项目的相关信息。现在,我们就可以将源
代码编译了。点击右边Links(
链接)中的Encode(编译),界面最下面的Console(控制台)窗口
显示“The operation has completed successfully.”,意思为编译已经完成。
现在再去加密后
文件保存的目录中,会看到其中也有一个test.
PHP,它是否和原来的test.
PHP一样呢?用编辑软件打开它,可以看到它不再是原来的
内容了,如图2所示。注意:自己一定要保存好原始
代码,不然丢失了,连你自己也没有办法查看和
修改的。
接下来测试一下加密的
代码,从浏览器访问加密后的
PHP程序,哎呀,出错了,不能运行,并
显示如图3所示的信息。原来,使用Zend Guard加密后的
PHP程序,还需要一个搭档—Zend Optimizer,才能正常执行并提升效率。可从
http://www.zend.com/en/products/guard/下载安装。安装过程中,“Choose the
PHP.ini folder”这一步表示设置系统上
PHP的
配置文件PHP.ini的位置,“Choose the Web server's root folder”这一步表示设置Web服务器软件所在的位置。安装完成以后,用记事本打开
PHP.ini,在最后我们会看到类似下面的配置信息:
[Zend]
zend_extension_manager.optimizer_ts="E:\Program Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0"
zend_extension_ts="E:\Program Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll"
这就表示Zend Optimizer已经安装成功了,我们可以重新启动Web服务器软件,让Zend Optimizer生效即可。注意:如果所使用的服务器已经安装过或者包含了Zend Optimizer,就不用再次安装了。
现在再次从浏览器访问加密后的
PHP程序试试,果然可以正常运行了,从
显示的信息中,我们可以看到Zend Optimizer的信息
<FONT style="COLOR: #ff0000">解析Zend Guard加密原理
让我们看看流程,就可以对Zend Guard的保护原理一目了然了。通过Zend Guard将
PHP源
代码编译为加密
代码,然后通过加载了Zend Optimizer的
PHP执行即可。分发给别人的程序,是加密后的
代码,可以执行,但是没有源
代码,别人也就无法查看和
修改了。因而,我们可以在程序中加入适当的
代码,用来检测系统的当前时间,看是否超过了预先设置的期限,如果超过了,就
退出程序不让继续执行。 Zend Guard的工作原理和Java类似,编译后的
PHP程序就像编译好的Java二进制
代码,需要JVM的
支持才能运行,Zend Optimizer可以看作是
PHP的虚拟机。Zend Guard与Zend Optimizer相互配合,就能完成编译加密和执行编译后
代码的工作。 License管理的方面属于更为深层的使用,可以用来
生成许可
文件,从而通过选择不同的许可模式来限制程序的使用,例如同时使用的
用户数、时间限制、网络分段或者特定的服务器等。有兴趣的读者可以查看Zend Guard自身所带的帮助
文件,来了解具体的
用法。