当前位置: 首页 > 工具软件 > PHP Screw > 使用案例 >

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

子车鸿运
2023-12-01

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源文件的备份文件

 类似资料: