php源码加密:php_screw 安装与使用

  • baagee 发布于 2016-07-09 22:13:29
  • 分类:Linux
  • 1713 人围观
  • 5 人喜欢

php为了保证源码安全,可以采用对源代码进行加密的方式来进行保护,分两部分去进行使用:

第一部分:安装:

1、进入http://sourceforge.net/projects/php-screw/下载最新版本php_screw-1.5.tar.gz

2,解压安装:

tar zxvf php_screw-1.5.tar.gz
cd php_screw-1.5
vi php_screw.h
#每个加密的文件头部都一个很明显的字符串PM9SCREW, 这样很容易被人猜到是用screw加密的.
#这个问题的解决需要在安装的第一步就开始. 该标识串在源码的php_screw.h中. 在编译之前, 可以更改这个字符串
#将define PM9SCREW “\tPM9SCREW\t”
#define PM9SCREW_LEN 10
#修改为任意字串,如:
#define PM9SCREW “\tDRXCFV\t”
#define PM9SCREW_LEN 8
#如果不改这个文件,加密的文件内容开头就会有 PM9SCREW,这么做是为了隐藏加密算法。
#修改加密密钥:
vim my_screw.c
#将 short pm9screw_mycryptkey[] = {11152, 368, 192, 1281, 62};
#修改为如:
short pm9screw_mycryptkey[] = {16543, 988, 345, 1678, 62, 295};
#越长加密越可靠,建议不要大于5位数。
#执行phpize
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make

如果编译出错,出现下面类似的:

/tmp/php_screw-1.5/php_screw.c: In function ‘zm_startup_php_screw’:
/tmp/php_screw-1.5/php_screw.c:124: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
/tmp/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:
/tmp/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

需要修改源文件中文件php_screw.c ,

将  124行,133行 的 

CG(extended_info) = 1;修改为 CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

重新make  //在modules生成libscrew.so库

将生成的php_screw.so放在/www/wdlinux/php/lib/php/extensions/no-debug-non-zts-20121212目录下(其他目录也行)

3,接下来要得到加密用的screw

(1). 进入源码的tools目录

(2). make //生成screw文件

4、修改/etc/php.ini在最后加入

[php_screw]
extension_dir =/www/wdlinux/php/lib/php/extensions/no-debug-non-zts-20121212
extension=php_screw.so
#注意:extension_dir=/www/wdlinux/php/lib/php/extensions/no-debug-non-zts-20121212 
#没有的要先加上,不然会找不到模块 (路径和文件放置的要一样)

5,拷贝tools/screw到/usr/bin/screw

第二部分:使用:

1、加密单个php文件:

screw test.php

加密成功后,test.php为加密后文件,新生成的test.php.screw为加密前文件。

2、对目录下所有文件进行加密:

find ./ -name "*.php"print|xargs -n1 screw //加密所有的.php文件
#例如
find ./test -name "*.php" -print|xargs -n1 screw
Success Crypting(./test/phpinfo.php)
Success Crypting(./test/echo99.php)
Success Crypting(./test/hello.php)
find ./ -name "*.screw" -print|xargs -n1 rm //删除所有的.php源文件的备份文件


评论

点击图片切换
还没有评论,快来抢沙发吧!