php_screw

http://sourceforge.net/projects/php-screw/files/


php文件通常以文本格式存贮在服务器端, 很容易被别人读到源代码, 为了对源代码进行保护, 可以采用对源代

码进行加密的方式.要实现该功能需要两部分:一是加密程序,实现对PHP文件的加密. 另一个就是对加密过的PHP

文件进行解析, 以得到运行结果. 前者的实现比较简单, 就是一程序而已. 后者的实现大部分都是通过php

module的形式来实现的.

php_screw(螺丝钉)可以实现以上的功能.

 


安装:

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

php_screw.so


# tar zxf php_screw-1.5.tar.gz
# cd php_screw-1.5
# /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 /)

接下来的任务就应该是加载php_screw.so模块了,

首先, 将该文件COPY到module目录下, 具体是哪个目录,可以参见/etc/php.ini配置文件中的extension_dir

项,RHEL 5中为/usr/lib/php/modules

方法一:可以在/etc/php.d目录下新建一个screw.ini文件,其内容是一句话extension=php_screw.so

方法二:通过修改/usr/local/php/etc/php.ini文件, 增加了一句extension=php_screw.so, 重启apache后就成

功了

测试:

编写一个hello, world程序,文件名为hello.php如下:


<?
echo "Hello,world"; 
?>


用php  hello.php测试程序是否能成功显示, 成功显示后, 用screw对其进行加密(screw  helllo.php), 然后

cat一下该php文件, 发现已经不是文本的了, 变成了许多乱字符, 说明加秘成功, 然后再php  hello.php, 如

果能正常显示hello,world, 则说明加密的解析也没有问题了, 一切就算OK了

 

附:

每个加密的文件头部都一个很明显的字符串PM9SCREW, 这样很容易被人猜到是用screw加密的
这个问题的解决需要在安装的第一步就开始. 该标识串在源码的php_screw.h中. 在编译之前, 可以更改这个字

符串, 例如,更改为PeterHu, 相应的下面的长度就不再是10了, 而是\tPeterHu\t,一共7个了.