CR_Y='\033[1;33m'
R_S='\033[1;35m'
PKG1="com.tencent.ig"
ACT1="com.epicgames.ue4.SplashActivity"

PKG2="com.pubg.krmobile"
ACT2="com.epicgames.ue4.SplashActivity"

PKG3="com.rekoo.pubgm"
ACT3="com.epicgames.ue4.SplashActivity"

PKG4="com.vng.pubgmobile"
ACT4="com.epicgames.ue4.SplashActivity"

echo "请选择序号/包名："
echo "1) $PKG1"
echo "2) $PKG2"
echo "3) $PKG3"
echo "4) $PKG4"
read CHOICE

case "$CHOICE" in
    1) apk=$PKG1; act=$ACT1 ;;
    2) apk=$PKG2; act=$ACT2 ;;
    3) apk=$PKG3; act=$ACT3 ;;
    4) apk=$PKG4; act=$ACT4 ;;
    *) apk=$CHOICE
       echo "请输入主Activity："
       read act ;;
esac
echo "已选择：$apk / $act"

########################################################################
# 3. 关掉已存在的进程
am force-stop "$apk" >/dev/null 2>&1

########################################################################
# 4. 启动游戏
echo "启动游戏..."
am start -n "$apk/$act" >/dev/null 2>&1

########################################################################
# 5. 等待真正游戏进程（最多 30 秒）
retry=0
while [ $retry -lt 5 ]; do
    pid=$(ps -A | grep -E "$apk" | grep -v grep | awk '{print $2}' | head -n1)
    [ -n "$pid" ] && break
    retry=$((retry+1))
    sleep 0.5
done

if [ -z "$pid" ]; then
    echo "未检测到任何含 $apk 的进程！"
    exit 1
fi

echo "游戏主进程 PID=$pid"

########################################################################
# 6. 注入流程（保持不变）
Data=/data/data

# 判断选择的是第5个选项还是其他
if [ "$CHOICE" = "4" ] ; then
    so=$(pwd)/libADIDASVNG.so
    echo "使用libADIDASVNG.so进行注入"
else
    so=$(pwd)/libADIDAS.so
    echo "使用libADIDAS.so进行注入"
fi    


# 检查so文件是否存在
if [ ! -f "$so" ]; then
    echo "错误：so文件不存在: $so"
    echo "当前目录: $(pwd)"
    ls -la *.so 2>/dev/null || echo "没有找到so文件"
    exit 1
fi

echo "so文件: $so"
ls -la "$so"

chmod 755 "$so"

data=$Data/$apk
echo "目标目录: $data"
rm -f "$data"/*.so
cp "$so" "$data/"

name=$(tr -dc 'A-Z' </dev/urandom | head -c5)
while echo "$name" | grep -q "'"; do
    name=$(tr -dc 'A-Z' </dev/urandom | head -c5)
done
so1=$data/lib$name.so

# 根据不同的so文件重命名
if [ "$CHOICE" = "4" ] ; then
    echo "重命名libADIDASVNG.so到 $so1"
    mv "$data/libADIDASVNG.so" "$so1"
else
    echo "重命名libADIDAS.so到 $so1"
    mv "$data/libADIDAS.so" "$so1"
fi

chmod 777 "$so1"

echo "开始注入: $(pwd)/PtraceInject $apk $so1"
"$(pwd)/PtraceInject" "$apk" "$so1"
echo "注入返回值: $?"

# 检查注入后是否还有so文件
echo "注入后检查:"
ls -la "$data"/*.so 2>/dev/null || echo "没有so文件"

rm -f "$so1"          # 注入完成后立即删除自身 so 文件
echo "注入完成，请返回游戏"

# 检查进程是否还在运行
sleep 2
pid=$(ps -A | grep -E "$apk" | grep -v grep | awk '{print $2}' | head -n1)
if [ -n "$pid" ]; then
    echo "游戏进程仍在运行: $pid"
else
    echo "游戏进程可能已崩溃"
fi