php_screw的安装与使用

1.下载:http://sourceforge.net/projects/php-screw/files/

php文件通常以文本格式存贮在服务器端, 很容易被别人读到源代码, 为了对源代码进行保护, 可以采用对源代
码进行加密的方式.要实现该功能需要两部分:一是加密程序,实现对PHP文件的加密. 另一个就是对加密过的PHP
文件进行解析, 以得到运行结果. 前者的实现比较简单, 就是一程序而已. 后者的实现大部分都是通过php
module的形式来实现的.
php_screw(螺丝钉)可以实现以上的功能.

2.安装:
安装的目的其实就是产生两个文件:一个是用于加密PHP文件的screw, 另一个就是php加载的解析模块
php_screw.so

# tar zxf php_screw-1.5.tar.gz
# cd php_screw-1.5

注:每个加密的文件头部都一个很明显的字符串PM9SCREW, 这样很容易被人猜到是用screw加密的
这个问题的解决需要在安装的第一步就开始. 该标识串在源码的php_screw.h中. 在编译之前, 可以更改这个字
符串, 例如,更改为PeterHu, 相应的下面的长度就不再是10了, 而是\tPeterHu\t,一共7个了.
# /usr/local/php/bin/phpize # ./configure –with-php-config=/usr/local/php/bin/php-config # make && make install 这样, 解析用的php_screw.so就生成了. 接下来要得到加密用的screw
# cd php_screw-1.5/tools # make 这样就生成了screw了. 如果要加密一个lx.php文件, 则: screw lx.php, lx.php就变成加密的了, 原来明文的 lx.php被改名为lx.php.screw 例:/php_screw-1.5/tools/screw /usr/local/apache/htdocs/test.php 为了方便可以( # cp /php_screw-1.5/tools/screw /usr/bin/)

3.修改php.ini配置
接下来的任务就应该是加载php_screw.so模块了,
首先, 将该文件COPY到module目录下, 具体是哪个目录,可以参见/etc/php.ini配置文件中的extension_dir
项,RHEL 5中为/usr/lib/php/modules
通过修改/usr/local/php/etc/php.ini文件, 增加了一句extension=php_screw.so, 重启php-fpm后就成
功了
4.测试:
编写一个hello, world程序,文件名为hello.php如下:

<?
echo “Hello,world”;
?>

用php hello.php测试程序是否能成功显示, 成功显示后, 用screw对其进行加密(screw helllo.php), 然后
cat一下该php文件, 发现已经不是文本的了, 变成了许多乱字符, 说明加秘成功, 然后再php hello.php, 如
果能正常显示hello,world, 则说明加密的解析也没有问题了, 一切就算OK了

Liunx 下安装 php_screw 扩展

php_screw 是一个 php 源代码加密扩展。首先来看一下 php_screw 在liunx下是如何安装的
首先 去源完整下载 安装包,现在的最新版是 1.5,我们就用1.5 来做个实例

如果有最新版,可以在 http://sourceforge.net/projects/php-screw/files/php-screw/ 查看,下载地址也可以更新哦

开始下载
wget http://sourceforge.net/projects/php-screw/files/latest/download?source=files

tar -zxvf php_screw-1.5.tar.gz
cd php_screw-1.5

/usr/local/php/bin/phpize (我的php安装路径是这个 /usr/local/php,按自己php安装路径来执行)
输出:
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
./configure –with-php-config=/usr/local/php/bin/php-config (我的php安装路径是这个 /usr/local/php,按自己php安装路径来执行)
make && make install

执行以上命令如果出现 :

/root/php_screw-1.5/php_screw.c: In function ‘zm_startup_php_screw’:

/root/php_screw-1.5/php_screw.c:124: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
/root/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:
/root/php_screw-1.5/php_screw.c:133: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
make: *** [php_screw.lo] Error 1
这些信息时:需要执行一下命令

vi php_screw.c

将 124行,133行 的
CG(extended_info) = 1;
修改为:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

然后在 执行

make && make install
执行正常后 生成 so文件

在php.ini 文件中 添加
extension=php_screw.so

然后重启 php 重启 应用服务器。

接下来要得到加密用的screw

1. 进入源码的tools目录

2. 执行 make

就生成了screw
加密文件 执行如下命令:

/源码目录/tools/screw 要加密的php文件名
执行后输出:

Success Crypting(要加密的php文件名)
这样 加密就成功了
你的没有加密的php文件 会保存到当前目录里,名字为 :要加密的php文件名.screw

整个目录下的文件加密需要用如下命令: 支持子目录
find . -name “*.php” -exec /源码目录/tools/screw {} \;

ok 搞定