解析如何用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 setcookie() cannot modify header information 的解决方法
Jan 09 PHP
网站用php实现paypal整合方法
Nov 28 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 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 日志缩略名的创建函数代码
2010/05/26 PHP
YII中assets的使用示例
2014/07/31 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
python3.4实现邮件发送功能
2018/05/28 Python
浅谈Python的list中的选取范围
2018/11/12 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
秦兵马俑教学反思
2014/02/07 职场文书
公司年底活动方案
2014/08/17 职场文书
作风大整顿心得体会
2014/09/10 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript