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 "混淆成功,请检查项目是否正常运行"

老段
0 声望0 粉丝