laravel 代码混淆
1. 下载yakpro-po最新版
https://github.com/pk-fr/yakpro-po
2. 解压
unzip yakpro-po.zip -d /usr/local/
3.给yakpro-po.php添加执行权限
cd /usr/local/yakpro-po
chmod a+x yakpro-po.php
4.下载PHP-Parser4.x并解压到/usr/local/yakpro-po下
https://github.com/nikic/PHP-Parser/tree/4.x/
如下图
5.创建yakpro-po软链接
ln -s /usr/local/yakpro-po/yakpro-po.php /usr/local/bin/yakpro-po
6.测试
yakpro-po --help
7. 假设我们有一个项目在/www/laravel_demo,不混淆vendor目录,不需要将其放进去
yakpro-po /www/laravel_demo/ -o /www/laravel_demo2/ --no-obfuscate-function-name --no-obfuscate-class_constant-name --no-obfuscate-class-name --no-obfuscate-interface-name --no-obfuscate-trait-name --no-obfuscate-property-name --no-obfuscate-method-name --no-obfuscate-namespace-name --no-obfuscate-label-name
说明: 以上--no-obfuscate-xxxx-name 表示不混淆的选项,推荐使用以上配置否则很容易出现混淆后不能正常访问的情况,这些配置也可以写到/usr/local/yakpro-po/yakpro-po.cnf中去,将对应的选项改为false即可,各个不同版本的laravel或者其他框架这个配置项也可能不同根据自己的改就行了
8.混淆后的代码在/www/laravel_demo2/yakpro-po/obfuscated中,是否可以只生成想要的源码大家可以查看官方文档,这是混淆后的源码,除php文件外其他文件会被原样复制过去
9. 加上vendor 目录,测试项目是否正常
10.可以参考下面的shell脚本
#!/bin/bash
# 注意yakpro-po需要已正常配置
#https://github.com/pk-fr/yakpro-po
# 设置目标位置
TARGET="/www/wwwroot/api6"
# 设置混淆后的代码位
OBFUSCATED_DIR="${TARGET}/yakpro-po/obfuscated"
# 检查yakpro-po是否存在
if ! command -v yakpro-po &> /dev/null; then
echo "Error: 请检查yakpro-po是否正确安装!"
exit 1
fi
if [ -d "$TARGET" ]; then
rm -rf "$TARGET"
fi
# 执行混淆操作
yakpro-po /www/wwwroot/api/ -o "$TARGET" --no-obfuscate-property-name
# 移动混淆后的代码到目标文件夹
mv $OBFUSCATED_DIR/* "$TARGET"
#删除混淆目录
rm -rf "$TARGET/yakpro-po"
# 检查vendor压缩文件是否存在
if ! [ -f $TARGET/vendor*.zip ]; then
echo "Error: 未找到vendor依赖库,请确认!"
exit 1
fi
# 解压vendor目录到目标位置
unzip -o "$TARGET/vendor*.zip" -d "$TARGET" # 指定解压到$TARGET目录
echo "混淆成功,请检查项目是否正常运行"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。