Total Pageviews

Wednesday, 17 November 2021

PHP代码加密方案对比,及yakpro-po加密使用教程

 Php 代码加密可以算是刚需了,但是官方本身并不支持。所以市面上就有很多三方的加密工具,尴尬的是,解密的工具比加密的工具不会少。所以对常见的 php 代码加密工具做了简单的分析,最终选择 yakpro-po 来加密代码。

Php代码加密工具对比

加密工具说明是否存在解密工具是否收费,及价格
phpjiami无扩展壳加密,弱
zhaoyuanma无扩展壳加密,弱
php-beast有扩展壳加密,弱
php_screw有扩展壳加密,弱
screw_plus有扩展壳加密,弱
ZoeeyGuard有扩展壳加密,弱
tonyenc有扩展壳加密,弱
EnPHP混淆加密
php-obfusactor混淆加密
yakpro-po混淆加密
魔方加密虚拟机加密
Z5 加密虚拟机加密100-1000
Zend Guard近似加密收费,停止更新
ionCube近似加密、扩展加密收费
Swoole Compiler近似加密、扩展加密3000-50000
SG11(SourceGuardian)近似加密、扩展加密

 

yakpro-po 加密(混淆)php代码

yakpro-po 是开源的加密工具,地址:https://github.com/pk-fr/yakpro-po

1 严格意义上,yakpro 只是对 php 代码中的变量、常量、函数、方法、类进行了混淆,然后用 goto 打乱代码顺序。

2 字符串没有混淆,而是用一种 16 进制字符表示,不知道怎么解密,但是放到 php 里面 echo 就能输出可读字符串。对 php 来说没有加密,对人类来说,加密了,不可读。

3 每次加密都是随机混淆。即这次 A 转换为 B,可能下次就是 A 转换为 C 了。所以要对整个目录进行一次性混淆。

4 混淆前后,变量对应关系可以在 yakpro-po/context 中找到。

5 没找到混淆项目时,排除其中几个目录的方法。配置文件中的 keep、skip 没用,所以把要加密的单独拎出来放到一个目录。

6 由于只对变量、常量、函数、方法、类进行了混淆,没有混淆字符串,所以有把字符串当【变量、常量、函数、方法、类名】的代码均会出错。如全局变量$in、$config,直接用$GLOBALS[‘in’]、$GLOBALS[‘config]访问出错;array_map(‘stripslashes_deep’, $value)这种形式调用 stripslashes_deep 函数会出错等等。所以直接配置不混淆类名和方法名

7 前端 html 和 php 混合的模板页面也支持不好,所以不混淆模板文件。且模板文件中的 php 函数也配置为忽略混淆。

8 在 include/class/config.php 中注释 comment 可以删除通过 yakpro-po 自动生成的版权信息

No comments:

Post a Comment