#!/system/bin/sh
# YINI 轻奢iOS风格版 | by 旖旎
# 先启动应用再注入 | 只一次水印菜单 执行完自动返回菜单 无重复
# 固定路径：/data/local/tmp/旖旎/
# 沙盒注入全程静默隐藏 无日志输出
PKG="com.rekoo.pubgm"
# 固定工作目录
WORK_DIR="/data/local/tmp/旖旎"

# ========== iOS 风格配色定义 ==========
C_PRIMARY='\033[38;5;117m'   # 主色：iOS系统蓝
C_TEXT='\033[38;5;255m'      # 一级文本：高亮白
C_SECONDARY='\033[38;5;246m' # 二级文本：浅灰
C_SEPARATOR='\033[38;5;237m' # 分隔线：极淡深灰
C_SUCCESS='\033[38;5;121m'   # 成功态：iOS薄荷绿
C_ERROR='\033[38;5;210m'     # 错误态：iOS珊瑚红
C_RESET='\033[0m'

# iOS 极简水印 无框
show_watermark(){
clear
printf "\n\n"
printf "            ${C_PRIMARY}YINI INJECTOR${C_RESET}\n"
printf "          ${C_SECONDARY}Telegram:@YINI886${C_RESET}\n"
printf "\n"
}

# iOS 分组列表菜单 无外框
show_menu(){
printf "    ${C_SECONDARY}功能选项${C_RESET}\n"
printf "    ${C_SEPARATOR}──────────────────────${C_RESET}\n"
printf "    ${C_TEXT}  1. 自动模式${C_RESET}        ${C_SECONDARY}›${C_RESET}\n"
printf "    ${C_SEPARATOR}──────────────────────${C_RESET}\n"
printf "    ${C_TEXT}  2. 手动模式${C_RESET}        ${C_SECONDARY}›${C_RESET}\n"
printf "    ${C_SEPARATOR}──────────────────────${C_RESET}\n"
printf "    ${C_TEXT}  3. 修改包名${C_RESET}        ${C_SECONDARY}›${C_RESET}\n"
printf "    ${C_SEPARATOR}──────────────────────${C_RESET}\n"
printf "    ${C_TEXT}  4. 退出程序${C_RESET}        ${C_SECONDARY}›${C_RESET}\n"
printf "    ${C_SEPARATOR}──────────────────────${C_RESET}\n"
printf "\n    ${C_SECONDARY}输入序号 › ${C_RESET}"
}

# ========== 核心功能逻辑 ==========
n5b6v7c8(){
rm -f /data/local/tmp/inject.tmp /data/local/tmp/so.tmp >/dev/null 2>&1
}

m6n7b8v9(){
    local s2d3f4g6="/data/local/tmp/inject.tmp"
    local d4f5g6h7="/data/local/tmp/so.tmp"
    local f6g7h8j9="$1"
    local g7h8j9k1="$2"
    local h8j9k1d2="$3"
    printf "\n"
    printf "    ${C_PRIMARY}● ${C_TEXT}准备运行环境${C_RESET}\n"
    cp "$g7h8j9k1" "$s2d3f4g6" >/dev/null 2>&1
    cp "$h8j9k1d2" "$d4f5g6h7" >/dev/null 2>&1
    chmod 755 "$s2d3f4g6" "$d4f5g6h7" >/dev/null 2>&1
    
    # 新增：启动目标应用
    printf "    ${C_PRIMARY}● ${C_TEXT}正在启动目标应用${C_RESET}\n"
    monkey -p "$f6g7h8j9" -c android.intent.category.LAUNCHER 1 >/dev/null 2>&1
    sleep 2
    
    printf "    ${C_PRIMARY}● ${C_TEXT}正在连接目标进程${C_RESET}\n"
    # 整段run-as沙盒全局屏蔽，内部所有命令静默无日志
    run-as "$f6g7h8j9" sh >/dev/null 2>&1 <<EOF
cd /data/data/$f6g7h8j9
cp /data/local/tmp/inject.tmp ./inject >/dev/null 2>&1
cp /data/local/tmp/so.tmp ./libinject.so >/dev/null 2>&1
chmod 755 ./inject ./libinject.so >/dev/null 2>&1
./inject -n $f6g7h8j9 -so /data/data/$f6g7h8j9/libinject.so >/dev/null 2>&1
EOF
    printf "    ${C_PRIMARY}● ${C_TEXT}清理临时文件${C_RESET}\n"
    n5b6v7c8
    printf "\n"
    printf "    ${C_SUCCESS}✓ 注入完成${C_RESET}\n"
    printf "    ${C_SECONDARY}状态：Ready${C_RESET}\n"
}

k2l3d4f5(){
    l3d4f5g7=$(ls $WORK_DIR/ | grep -E "^(Inject|inject)(\.so)?$" 2>/dev/null | head -n 1)
    echo "$WORK_DIR/$l3d4f5g7"
}

p3o4i5u6(){
    o4i5u7y8=$(ls $WORK_DIR/*.so 2>/dev/null | grep -vE "^(Inject|inject)\.so$" | head -n 1)
    echo "$o4i5u7y8"
}

# ======================================================
# 注入调用
run_inject(){
    m6n7b8v9 "$PKG" "$INJECT_PATH" "$SO_PATH"
}

# 主逻辑
while true; do
    clear
    show_watermark
    show_menu
    read opt
    case $opt in
    1)
        printf "\n"
        printf "    ${C_PRIMARY}● ${C_TEXT}扫描本地资源${C_RESET}\n"
        SO_PATH=$(p3o4i5u6)
        [ -z "$SO_PATH" ] && { 
            printf "    ${C_ERROR}✕ 未找到资源文件${C_RESET}\n"
            sleep 2
            continue
        }
        INJECT_PATH=$(k2l3d4f5)
        [ -z "$INJECT_PATH" ] && { 
            printf "    ${C_ERROR}✕ 未找到注入器${C_RESET}\n"
            sleep 2
            continue
        }
        run_inject
        printf "\n"
        printf "    ${C_SECONDARY}即将返回主页…${C_RESET}\n"
        sleep 2
        ;;
    2)
        printf "\n"
        printf "    ${C_PRIMARY}● ${C_TEXT}手动配置模式${C_RESET}\n"
        printf "    ${C_SECONDARY}目标包名 › ${C_RESET}"
        read PKG
        printf "    ${C_SECONDARY}资源路径 › ${C_RESET}"
        read SO_PATH
        printf "    ${C_SECONDARY}注入器路径 › ${C_RESET}"
        read INJECT_PATH
        [ ! -f "$SO_PATH" ] && { 
            printf "    ${C_ERROR}✕ 资源文件不存在${C_RESET}\n"
            sleep 2
            continue
        }
        [ ! -f "$INJECT_PATH" ] && { 
            printf "    ${C_ERROR}✕ 注入器不存在${C_RESET}\n"
            sleep 2
            continue
        }
        run_inject
        printf "\n"
        printf "    ${C_SECONDARY}即将返回主页…${C_RESET}\n"
        sleep 2
        ;;
    3)
        printf "\n"
        printf "    ${C_PRIMARY}● ${C_TEXT}目标包名设置${C_RESET}\n"
        printf "    ${C_SECONDARY}当前目标 › ${C_TEXT}$PKG${C_RESET}\n"
        printf "    ${C_SECONDARY}输入新包名 › ${C_RESET}"
        read NEW_PKG
        SCRIPT_PATH="$0"
        sed -i "s/^PKG=\".*\"/PKG=\"$NEW_PKG\"/" "$SCRIPT_PATH" > /dev/null 2>&1
        PKG="$NEW_PKG"
        printf "\n"
        printf "    ${C_SUCCESS}✓ 配置已保存${C_RESET}\n"
        printf "\n"
        printf "    ${C_SECONDARY}即将返回主页…${C_RESET}\n"
        sleep 2
        ;;
    4)
        printf "\n"
        printf "    ${C_SECONDARY}Session Closed${C_RESET}\n"
        exit 0
        ;;
    *)
        printf "\n"
        printf "    ${C_ERROR}✕ 输入无效，请重新选择${C_RESET}\n"
        sleep 2
        ;;
    esac
done
