解析如何用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 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
测试您的 PHP 水平的题目
May 30 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php 缓存函数代码
Aug 27 PHP
php 字符转义 注意事项
May 27 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 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 adodb连接不同数据库
2009/03/19 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
django session完成状态保持的方法
2018/11/27 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python迭代器常见用法实例分析
2019/11/22 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
python调用私有属性的方法总结
2020/07/24 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
语文课外活动总结
2014/08/27 职场文书
手机被没收的检讨书
2014/10/04 职场文书
记者节感言
2015/08/03 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
详解Redis实现限流的三种方式
2021/04/27 Redis