gitclonehttps://git.oschina.net/splot/php-screw-plus.git
进入项目目录,然后执行php的phpize文件,phpize是官方提供的可执行文件用于动态生成扩展开发环境,一般在php的bin目录下可以找到。lnmp的phpize在/usr/local/php/bin/phpize/usr/local/php/bin/phpize
Configuringfor:
PHPApiVersion: 20100412
ZendModuleApiNo: 20100525
ZendExtensionApiNo: 220100525
执行成功后可以看到当前的phpapi版本,扩展api版本等。下一步就可以开始配置了。配置命令为 ./configure--with-php-config=[php-config],[php-config]一般也在php的bin目录下,写绝对路径就可以了。./configure--with-php-config=/usr/local/php/bin/php-config
如果没报错,说明配置成功了,可以开始下一步编译了。编译之前,我们可以修改加密的key,打开php_screw_plus.h可以看到开头就是#defineCAKEY"...",把里面的值改为一个足够复杂的key,最好16位以上,比如:9mqss6q7WsBpTMOZviphp_screw_plus.h
修改完毕之后,直接开始编译,执行make命令,如果最后显示Buildcomplete.说明编译成功,扩展在modules里面,如果报错请根据提示进行修复,然后makeclean之后重新编译。make
...
Buildcomplete.
上面我们编译的是解密程序,而加密程序也需要我们手动编译一下,进入tools目录执行make命令即可。如果没有报错,则扩展就全部编译完成了。cdtools/&&make
然后需要把扩展的路径加入到php.ini中,你可以把modules/php_screw_plus.so复制到php扩展目录也可以直接在ini中加入绝对路径,我一般倾向于绝对路径这样修改编译了扩展也不需要重新复制过去。viphp/etc/php.ini
加入绝对路径例如
extension=/home/php_screw_plus-1.0/modules/php_screw_plus.so
然后重启php服务这时可以放个php文件输出phpinfo信息,如果看到以下提示说明扩展生效了。下面还有最后一步,加密程序。在扩展的tools目录,执行./screw[路径],[路径]可以是单个文件也可以是文件夹,然后就可以实现加密了。加密完成后查看源码,可以发现除了开头的几个英文字符外,其余的都成了乱码。但是打开网站,php运行正常,如果没有加密一样。经过测试,解密速度大约为100M每秒,对php自身的性能损失非常小,一般不到20毫秒。ScrewPlus还有个功能,可阻止执行未经许可的php文件,这样黑客就算上传了代码也然并卵。同样在php_screw_plus.h里修改,把STRICT_MODE后面的值改为1,然后makeclean&&make重新编译并重启php,然后打开之前加过密的网站,执行正常,但是我们随意上传个明文的php文件,结果是一片空白。原因是未加密的php文件头部不包含识别key,扩展会返回空内容,就算黑客获取了key并加入也没用,内容会被解密成乱码仍然无法执行。经过ScrewPlus的保护,即使网站整站被下载或被上传了恶意代码,也无法对网站造成损失。
评论