#!/system/bin/sh

CONF_FILE="./inject_config.ini"

# 初始化配置文件
init_config(){
    if [ ! -f "$CONF_FILE" ]; then
        echo "PKG=" > "$CONF_FILE"
        echo "INJECT_PATH=" >> "$CONF_FILE"
        echo "SO_PATH=" >> "$CONF_FILE"
    fi
}

# 读取配置
load_config(){
    PKG=$(grep "^PKG=" "$CONF_FILE" | cut -d'=' -f2)
    INJECT_SAVE=$(grep "^INJECT_PATH=" "$CONF_FILE" | cut -d'=' -f2)
    SO_SAVE=$(grep "^SO_PATH=" "$CONF_FILE" | cut -d'=' -f2)
}

# 保存配置
save_config(){
    echo "PKG=$1" > "$CONF_FILE"
    echo "INJECT_PATH=$2" >> "$CONF_FILE"
    echo "SO_PATH=$3" >> "$CONF_FILE"
    echo "        ✅ 配置已成功保存"
}

# 清理临时文件
clear_tmp(){
    rm -f /data/local/tmp/inject.tmp /data/local/tmp/so.tmp
}

# 核心注入逻辑
do_inject(){
    local TMP_INJ="/data/local/tmp/inject.tmp"
    local TMP_SO="/data/local/tmp/so.tmp"
    local PKG="$1"
    local INJ="$2"
    local SO="$3"

    echo "        📁 准备临时注入文件..."
    cp "$INJ" "$TMP_INJ"
    cp "$SO" "$TMP_SO"
    chmod 755 "$TMP_INJ" "$TMP_SO"

    echo "        ⚙️  进入应用沙盒注入..."
    run-as "$PKG" sh <<EOF
cd /data/data/$PKG
cp /data/local/tmp/inject.tmp ./inject
cp /data/local/tmp/so.tmp ./libinject.so
chmod 755 ./inject ./libinject.so
./inject -n $PKG -so /data/data/$PKG/libinject.so
EOF

    echo "        🧹 清理临时残留文件..."
    clear_tmp
    echo "        🎉 注入流程执行完毕"
}

# 自动查找注入器 兼容 inject / Inject / inject.so / Inject.so
find_inject(){
    INJ_FOUND=$(ls -t | grep -E "^(Inject|inject)(\.so)?$" 2>/dev/null | head -n 1)
    echo "$INJ_FOUND"
}

# 自动筛选最新SO 排除inject.so
find_latest_so(){
    SO_FOUND=$(ls -t *.so 2>/dev/null | grep -vE "^(Inject|inject)\.so$" | head -n 1)
    echo "$SO_FOUND"
}

# 初始化配置
init_config
load_config

# ==================== 美化UI主界面 ====================
echo "=================================================="
echo "          浮觅 · 多功能注入工具 V3"
echo "=================================================="
echo "          作者：浮觅   代理：雾隐"
echo "=================================================="
echo "  1  自动模式   │ 兼容inject.so 自动识别最新SO"
echo "  2  手动模式   │ 手动输入包名/注入器/SO路径"
echo "  3  快捷注入   │ 直接使用已保存配置运行"
echo "  4  修改包名   │ 单独编辑已保存游戏包名"
echo "  5  重置配置   │ 重新修改全部保存参数"
echo "  6  退出工具   │ 关闭当前注入程序"
echo "=================================================="
echo -n "  请输入功能选项 [1-6]："
read opt
# ======================================================

case $opt in
1)
echo ""
echo "        【自动模式｜兼容inject.so 自动最新SO】"
if [ -n "$PKG" ]; then
    echo "        📌 已保存默认包名：$PKG"
    echo -n "        是否沿用该包名 (y/n)："
    read use_pkg
    if [ "$use_pkg" != "y" ] && [ "$use_pkg" != "Y" ]; then
        echo -n "        请输入临时新游戏包名："
        read PKG
    fi
else
    echo -n "        请输入游戏包名："
    read PKG
fi

INJ_FILE=$(find_inject)
if [ -z "$INJ_FILE" ]; then
    echo "        ❌ 未找到 inject / inject.so 注入器"
    exit 1
fi
CUR_INJ="$PWD/$INJ_FILE"

SO_FILE=$(find_latest_so)
if [ -z "$SO_FILE" ]; then
    echo "        ❌ 未找到有效SO注入文件"
    exit 1
fi
CUR_SO="$PWD/$SO_FILE"

echo "        ✅ 识别注入器：$INJ_FILE"
echo "        ✅ 自动选用SO：$SO_FILE"
echo -n "        是否覆盖保存当前配置 (y/n)："
read sava
if [ "$sava" = "y" ] || [ "$sava" = "Y" ]; then
    save_config "$PKG" "$CUR_INJ" "$CUR_SO"
fi

do_inject "$PKG" "$CUR_INJ" "$CUR_SO"
;;

2)
echo ""
echo "        【手动模式｜自定义全部参数】"
echo -n "        输入游戏包名："
read PKG
echo -n "        输入注入器完整路径："
read CUR_INJ
echo -n "        输入SO文件完整路径："
read CUR_SO

if [ ! -f "$CUR_INJ" ]; then echo "        ❌ 注入器文件不存在";exit 1;fi
if [ ! -f "$CUR_SO" ]; then echo "        ❌ SO文件不存在";exit 1;fi

echo -n "        是否保存当前配置 (y/n)："
read sava
if [ "$sava" = "y" ] || [ "$sava" = "Y" ]; then
    save_config "$PKG" "$CUR_INJ" "$CUR_SO"
fi

do_inject "$PKG" "$CUR_INJ" "$CUR_SO"
;;

3)
echo ""
echo "        【快捷注入｜使用已保存配置】"
if [ -z "$PKG" ] || [ -z "$INJECT_SAVE" ] || [ -z "$SO_SAVE" ]; then
    echo "        ❌ 暂无已保存配置，请先配置一次"
    exit 1
fi
echo "        📌 保存包名：$PKG"
echo "        📁 注入器路径：$INJECT_SAVE"
echo "        📁 SO文件路径：$SO_SAVE"
echo -n "        确认开始注入 (y/n)："
read ok
if [ "$ok" = "y" ] || [ "$ok" = "Y" ]; then
do_inject "$PKG" "$INJECT_SAVE" "$SO_SAVE"
fi
;;

4)
echo ""
echo "        【修改包名｜单独更新游戏包名】"
echo "        📌 旧包名：$PKG"
echo -n "        请输入新游戏包名："
read NEW_PKG
save_config "$NEW_PKG" "$INJECT_SAVE" "$SO_SAVE"
;;

5)
echo ""
echo "        【重置配置｜重新保存全部参数】"
echo -n "        输入新游戏包名："
read NEW_PKG
echo -n "        输入新注入器路径："
read NEW_INJ
echo -n "        输入新SO文件路径："
read NEW_SO
save_config "$NEW_PKG" "$NEW_INJ" "$NEW_SO"
;;

6)
echo ""
echo "        👋 已退出 浮觅·雾隐注入工具"
exit 0
;;

*)
echo ""
echo "        ❌ 输入无效，请重新运行脚本选择正确选项"
exit 1
;;
esac