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 "混淆成功,請檢查項目是否正常運行"