解析如何用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 如何向 MySQL 发送数据
Oct 09 PHP
php a simple smtp class
Nov 26 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
php正确输出json数据的实例讲解
Aug 21 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 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获取访问者IP地址汇总
2015/04/24 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
2014年优秀党员材料
2014/12/18 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python