PHP代码混淆与加密——php screw plus

php是一个开源的、广受欢迎的语言,php应用常常是以代码明文的方式发布,但是有时候对于发布的代码我们想要进行保护,需要对php代码进行混淆与加密,让增加破解者的逆向难度,从而达到保护自己成果的目的。

在市面上流行的加密方案非常多,比如:

Zend Guard:遗憾的是不支持PHP7

IonCube PHP Encoder:优于Zend Guard。但是收费。

Swoole Compiler:这一款工具进行了很深入的编译优化,相当牛B。很可惜,也收费,还很贵。

PHP Screw Plus:基于扩展来加解密,采用AES256算法,还可阻止执行未经许可的php文件。性能、防破解各项指标非常均衡,更重要的是免费。

 

今天,我们重点介绍的就是PHP Screw Plus这一款工具。因为名字实在有点长,以下简称Screw。

在开始介绍之前,假设大家对Linux操作、PHP扩展编译已经了解。因为Screw只能运行在Linux平台上,所以我们都会在CentOS 7.5上进行操作演示。(PHP谁还跑在Windows上呢-_-)

 

1、下载代码:点击链接传送

这里,我们将下载的zip压缩包放在/www/setup/splot-php-screw-plus-master.zip

解压后,我们会得到/www/setup/php-screw-plus,进入这个目录。

 

2、编译扩展(这一步是编译扩展的套路操作,如果不清楚,可以给我私信)

phpize

./configure --with-php-config=php-config的路径

make

make install

修改php.ini

重启php可以看到phpinfo里成功加载了扩展php_screw_plus

备注,因为代码的加密是基于密钥的,所以在编译之前可以修改源码包下的php_screw_plus.h里的CAKEY对默认密钥进行修改,保存之后再进行编译,如下图:

 

 

3、编译加密工具

执行完第2步后,把扩展编译完成了,但是加密代码的工作还没有编译出来。这时候我们发现/www/setup/php-screw-plus目录下多了一个tools目录。进入tools目录执行make,可以编译出screw,这个就是加密php的工具:

 

 

4、实验

1) 假设站点根目录为/www/wwwroot/default。进入这个目录,新建index.php,内容如下:

2) 执行以下面令,加密这个文件:

/www/setup/php-screw-plus/tools/screw  index.php

3) 加密后的代码如下:

 是不是认不出来了:)

 4) 从浏览器访问index.php,我们可以看到:

到这里,我们就大功告成了。在Laravel框架下,这个扩展没有任何问题,亲测有效,所以大家放心使用吧。因为这是一个开源工程,所以大家也可以在gitee上提交自己的push。

如果我们想对加密后的文件进行解密,只需要运行/www/setup/php-screw-plus/tools/screw index.php -d

即加密代码多了一个-d选项,之后就可以还原出明文。注意,如果是在另外的环境下进行解密,那扩展工具的key一定要一致,否则是解密不出来的。

 

好了,这个工具介绍到此结束。除了这个工具,这个世界上不缺大神,php-beast也是很值得一试的。github上有完整的说明,就不一一列举了,大家点击传送门吧:)

posted on 2020-08-01 21:25  咚..咚  阅读(4218)  评论(0编辑  收藏  举报

导航