动态

详情 返回 返回

laravel 代碼混淆,混淆不是加密,只是增加了代碼閲讀的難度 - 动态 详情

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/

如下圖
image.png

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文件外其他文件會被原樣複製過去

image.png

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

Add a new 评论

Some HTML is okay.