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个了.