使用 YAK Pro - PHP Obfuscator 混淆 php 代码 示例为PHP8 + larveal10 框架代码
什么是Php混淆?
当您有一个要发布一个php项目时,往往会吧代码全部部署到服务器上;出于任何原因,您可能希望其他人不理解、修改或调整您的软件。但是又需要被PHP理解所以我们只需要做到混淆代码让人难以理解。
请注意
yakpro-po 2.x 在PhpParser 4.x上运行
它将在php >= 7.0 上运行,混淆 php 5.2 到 php 7.3 的代码
如果您正在运行 php 5.3 或更高版本,
请使用不受支持的 yakpro-po 1.x,它适用于PhpParser的1.x分支
安装
本次使用的是centos 作为基础环境 以及使用的是宝塔默认安装的PHP
- 首先需要使用git下载yak pro和 php parse
- 这里指定目录为
/www/wwwroot/vpro
作为目录
git clone https://github.com/pk-fr/yakpro-po.git
git clone https://github.com/nikic/PHP-Parser.git --branch 4.x
# 进入yakpro-po目录
cd yakpro-po
# 检查yakpro-po.php是否具有执行权限
chmod a+x yakpro-po.php
# 为了更方便的使用 所以我们可以去创建一个软连接
cd /usr/local/bin
ln -s /www/wwwroot/vpro/yakpro-po/yakpro-po.php yakpro-po
# 创建完成以后我们进入我们的larveal目录
需要注意的是 因为larveal 框架使用了反射等机制自动加载类,所以我们还需要调整一下 yakpro的配置 让他禁止去混淆一些关键信息
打开 .cnf 文件 找到如下位置
修改如下变量为false 具体的配置信息可以查看(https://github.com/pk-fr/yakpro-po.git)的readme文件;
修改以后我们执行如下命令
# 这个命令大概就是指定使用 php来执行 yakpro-po 去混淆 cModuleMiddleware.php 输出到 cModuleMiddleware2.php
/www/server/php/80/bin/php /usr/local/bin/yakpro-po cModuleMiddleware.php -o cModuleMiddleware2.php
无报错则说明正常 我们打开文件看一下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a02ed119318e4f62bd3edc07d0fc8843.png可以看到已经正常执行混淆了,这里类名和命名空间等没有被混淆的原因是因为我们因为larveal的特性手动取消了混淆的配置
如果需要删除混淆以后的注释,找到如下代码注释即可