php加密扩展,php-screw-plus如何安装使用?如何破解?
发布于 作者:苏南大叔 来源:程序如此灵动~php-screw-plus
是一款用于php
源码加密的扩展,这款php-screw-plus
扩展的使用效果如何呢?那么,用php-screw-plus
加密过的源码,还能不能被破解呢?如果可以,如何破解呢?为了达到"php代码是加密的,却能正常执行"的目的,php-screw-plus
提供了很多加密功能。具体的使用方法,请参考本文。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述php
源码加密扩展php-screw-plus
。本文测试环境:centos@7.7.1908
,php@7.4.28
,php-screw-plus@0.11
。
扩展源码下载
php
代码之所以会繁荣(泛滥),其中的一个主要原因就是:它的源码不是加密的。但是,这种情况已经逐渐有所改善,有很多开源的或者商业的php
扩展,可以给php
代码进行加密。在运行加密的php
源码的时候,对应插件会对源码按照一定的算法进行还原(划重点、划重点、划重点)。
php-screw-plus
是基于php-screw
的二次开发,不过苏南大叔并没有实验过原版的php-screw
的效果,所以这里也不好下结论。这个plus
版本到底有什么更先进的地方,大家可以自行评判。
可以下载php-screw-plus
的地方,有下面两个,看上去都是作者发布的。
作者写的说明文档:
修改配置
官方推荐修改1:
在编译前,对php_screw_plus.h
进行配置,主要修改以下参数CAKEY
。
当然,仅仅是拿来测试的话,您不修改也行,加密效果也是非常不错的,风险么,大家自己琢磨。
php_screw_plus.h
:
#define CAKEY "FwWpZKxH7twCAG4JQMO"
//如果只允许执行加过密的php文件 设置STRICT_MODE为1
//set STRICT_MODE to 1 if you only want the crypted php files to be executed
#define STRICT_MODE 0
#define STRICT_MODE_ERROR_MESSAGE "ACCESS DENIED"
const int maxBytes = 1024*1024*2;
官方推荐修改2:
除了CAKEY
之外,还有个STRICT_MODE
,这个参数是用来控制是不是执行普通未加密的.php
代码的。
- 默认为
0
,就是说执行未加密的代码。 - 改成
1
的话,那么网站内部根目录下,只能有加密的源码,未加密的源码一律不执行。官方的说法是:可以阻止黑客上传的木马文件。猛地听上去,还是挺有道理的。
扩展编译
这个扩展的编译过程,和其它的扩展编译过程几乎是一致的,没有啥太特殊的地方。苏南大叔的测试中,该款php-screw-plus
扩展和php@8
是不兼容的。所以,这里是配合php@7
使用的。
命令如下:
unzip php-screw-plus-master.zip
cd php-screw-plus-master/
/home/php7/bin/phpize
./configure --with-php-config=/home/php7/bin/php-config
make clean
make
make install
注意事项:
- 修改
phpize
和php-config
的路径为你自己的实际路径。 - 注意
make clean
,这个不做过多解释。
使用姿势
扩展根目录下面make install
之后,.so
文件就会自动出现在对应的extension
扩展目录。对于本文的测试环境来说,这个路径就是:
/home/php7/lib/extensions/no-debug-non-zts-20190902/
正常使用的话,需要配置php.ini
文件。这里不做过多描述,大家都知道。
extension=php_screw_plus.so
如果使用-d
参数临时加载扩展的话,也是可以的。
/home/php7/bin/php -d extension=php_screw_plus.so
可以使用-d
和-r
参数联合,直接查看phpinfo()
里面的信息。
/home/php7/bin/php -d extension=php_screw_plus.so -r 'phpinfo();'|grep screw
返回内容类似如下:
php_screw_plus
php_screw_plus support => enabled
php_screw_plus version => 0.11
tools
加密和解密
有些不一样的地方是,这款php-screw-plus
还有个tools
目录,需要单独make
一下。
cd tools
make
然后就会在tools/
目录生成个可执行文件./screw
,就是用它对代码进行手工加密和手工解密的。
cd php-screw-plus-master/tools/
注意!!!这个加密解密结果是直接覆盖的!请自行备份原始数据!
这里有两个文件作为对比测试,一个是原版的未加密的,另外一个是加密过的。经过运行可以发现:被加密的版本明显要比原版的要慢上一些,但是在可接受的范围内。
加密的基本姿势:
./screw [目录或文件]
./screw /home/www/
解密的话,就是加个-d
参数。
./screw [目录或文件] -d
./screw /home/www/ -d
php-screw-plus
破解
这个问题么,网上的教程上写的都是异常复杂的,要祭出软件破解利器IDA
,然后再修改这个那个的。其实,如果你懂得php
内核的编译修改的话,php-screw-plus
程度的破解那是异常容易的,并不需要改这改那,内核里面做拦截就可以了。相关文章:
当然,这里苏南大叔也不挡别人的财路了。如果大家有需要,这里也可以提供相关的破解服务。需要你提供对应的screw-plus.so
文件,以及加密过的可运行的.php
文件。
参考文献
- https://newsn.net/say/phpsrc-zend-function.html
- https://newsn.net/say/centos-phpsrc.html
- https://newsn.net/say/phpsrc-compile-centos.html
总结
php
代码的加密和解密,是个永恒的话题。随着php@8
系列的发展,更会有一些更高级的加密手段出现的。记得到时候来看苏南大叔的博客,苏南大叔给大家带来php
加密解密的故事。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。