解析如何用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 相关文章推荐
我的论坛源代码(十)
Oct 09 PHP
php正则表达式(regar expression)
Sep 10 PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
PHP使用Redis实现Session共享的实现示例
May 12 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
TP5框架实现签到功能的方法分析
Apr 05 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之源码目录结构与功能说明
2016/06/01 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
详解JavaScript 高阶函数
2020/09/14 Javascript
PyQt5每天必学之切换按钮
2020/08/20 Python
python cs架构实现简单文件传输
2020/03/20 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python 字符串常用函数详解
2019/09/11 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python实现猜单词游戏
2020/05/22 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
毕业生优秀推荐信
2013/11/26 职场文书
员工培训邀请函
2014/01/11 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
预备党员转正考核材料
2014/06/03 职场文书
员工年终自我评价
2014/09/14 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2014年底工作总结
2014/12/15 职场文书
Python爬取某拍短视频
2021/06/11 Python
React列表栏及购物车组件使用详解
2021/06/28 Javascript