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/ 如下图 https://segmentfault.com/img/bVdcpIP 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文件外其他文件会被原样复制过去 https://segmentfault.com/img/bVdcpJi 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 "混淆成功,请检查项目是否正常运行"