解析如何用php screw加密php源代码


Posted in PHP onJune 20, 2013

在使用PHP过程中发现,自己编写的php代码因为都是源代码方式放在服务器上的所以很容易就被别人拿走随便修改(变成自己开发的)使用了。
为了保住自己的劳动成果,我一直寻找一种可以加密php代码的软件。
最著名的就是Zend公司的Zendencoder了,但是不是开源软件(要价很高,也没有找到破解版)。
既然收费的用不起,我们就用开源的。我找到了php_screw这个开源软件,目前最新版本是1.5
安装环境
系统:centos 5.3
软件:Apache 2.2.9
PHP 5.2.10
以上环境全部是自己下载配置安装的。具体的Apache+php+mysql安装方法请从网上搜索。
安装
1.用tar解压缩 tar -zxvf php_screw-1.5.tar.gz
2.进入php_screw-1.5目录开始安装
cd php_screw-1.5
phpize
关于phpize ,它在php5-dev扩展模块中 只要安装php5-dev模块就行了。
./confiugre
3.设置自己用来加密的密码

vi my_screw.h
 -- Please change the encryption SEED key (pm9screw_mycryptkey) into the
    values according to what you like.
    The encryption will be harder to break, if you add more values to the
    encryption SEED array. However, the size of the SEED is unrelated to
    the time of the decrypt processing.
 *  If you can read and understand the source code, to modify an original
        encryption logic will be possible. But in general, this should not
        be necessary.
   OPTIONAL: Encrypted scripts get a stamp added to the beginning of the
        file. If you like, you may change this stamp defined by
        PM9SCREW and PM9SCREW_LEN in php_screw.h. PM9SCREW_LEN must
        be less than or equal to the size of PM9SCREW.

4.编译
make
5.拷贝modules目录下的php_screw.so文件到/usr/lib/php5/extension目录下
cp modules/php_screw.so /usr/lib/php5/extension/
6.编辑php.ini文件
在php.ini文件里,加入如下语句
extension=php_screw.so
7.重新启动Apache
/srv/apache/bin/apachectl restart
8.编译加密工具
cd tools
make
9.将tools目录下加密用的工具screw拷贝到适当目录
cp screw /usr/bin/
经过以上的10步,就已经把php_screw-1.5全部安装完成了。并且现在的php也已经支持解释加密过的php文件了
使用
1.现写一个要加密的php文件。
我写了如下的一个用来测试php速度的test.php文件
<?
$a=0;
$t=time();
for($i=0;$i<5000000;$i++)
  {$a=$a*$i;}
$t1=time();
echo "<p>";
echo "It used:";
echo $t1-$t;
echo "seconds";
?>

将上面的test.php文件放到/var/www/目录下。通过浏览器访问,将显示出php在大量计算时的速度(粗略估计)
2.将我们写的php文件加密
cd /var/www/
screw test.php
我们加密后,现在目录下的test.php文件就是我们已经加密的了。而源文件被改名为test.php.screw存放了。
我们现在再测试一下test.php,看看能否正常使用?速度如何?
我比较了一下,加密前后的速度大概一样,基本没有太多的损失。
3.批处理加密文件
在debian, apache2, php5上测试过对.html文件加密后,能正确解析;
php_screw如何对当前目录下,对目录下包含的文件,以及包含目录下的文件进行整体加密
find ./ -name "*.php"-print|xargs -n1 screw //加密所有的.php文件
find ./ -name "*.screw" -print/xargs -n1 rm //删除所有的.php源文件的备份文件
这样在当前目录下的所有.php文件就全部背加密了
PHP 相关文章推荐
[转帖]PHP世纪万年历
Dec 06 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 #PHP
php连接Access数据库错误及解决方法
Jun 20 #PHP
PHP连接Access数据库的方法小结
Jun 20 #PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 #PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 #PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 #PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 #PHP
You might like
php中一个完整表单处理实现代码
2011/11/10 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
redux.js详解及基本使用
2019/05/24 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Python之读取TXT文件的方法小结
2018/04/27 Python
python实现简易动态时钟
2018/11/19 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
美国购车网站:TrueCar
2016/10/19 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
EJB实例的生命周期
2016/10/28 面试题
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
react antd实现动态增减表单
2021/06/03 Javascript
Ajax实现异步加载数据
2021/11/17 Javascript