PHP代码保护--Zend Guard的使用详解


Posted in PHP onJune 03, 2013

Zend Guard的作用,就是用编译处理的方式来保护PHP源代码免于被反编译查看、未经授权的定制修改、未经许可的使用和重新发布等。而且,它是PHP的东家Zend公司开发的,是完全为PHP量身定做的保护神。
下面,请大家就和我一起来学习使用Zend Guard,加密保护我们的PHP源代码吧。


实战:加密PHP源代码
下载:http://www.zend.com/en/products/guard/
接下来让我们准备一个简单的PHP程序test.php,用来测试能否被Zend Guard保护起来。test.php的代码如下:

<?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的信息


解析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自身所带的帮助文件,来了解具体的用法。

PHP 相关文章推荐
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php导出生成word的方法
Dec 25 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
Smarty3配置及入门语法
Feb 22 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 #PHP
基于php-fpm的配置详解
Jun 03 #PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 #PHP
基于PHP一些十分严重的缺陷详解
Jun 03 #PHP
spl_autoload_register与autoload的区别详解
Jun 03 #PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 #PHP
linux命令之调试工具strace的深入分析
Jun 03 #PHP
You might like
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
php目录操作实例代码
2014/02/21 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP实现微信退款功能
2018/10/02 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
使用python统计文件行数示例分享
2014/02/21 Python
初步理解Python进程的信号通讯
2015/04/09 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
Django websocket原理及功能实现代码
2020/11/14 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
红色故事演讲稿
2014/05/22 职场文书
伦敦奥运会口号
2014/06/13 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
趵突泉导游词
2015/02/03 职场文书
关于感恩的作文
2019/08/26 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript