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

761次阅读
没有评论

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

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 是开源的加密工具,github 地址: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 自动生成的版权信息。

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)