34 lines
1.9 KiB
Bash
34 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
||
# ==============================================================================
|
||
# phantom_frida_keepalive.sh — Phantom-Frida 保活守护(FS-6)
|
||
#
|
||
# 背景:微信 8.0.69 反检测会间歇 kill frida-server,导致 Hook 掉线、开发中断。
|
||
# 本守护在 Mac 主机循环检查设备端 Phantom-Frida 进程,死了就用 Root 重起,
|
||
# 并触发 Agent 重连(可选)。不依赖手机端 Termux。
|
||
#
|
||
# 用法:
|
||
# nohup bash phantom_frida_keepalive.sh xgfe65eimrrofyws > logs/phantom_keepalive.log 2>&1 &
|
||
# ==============================================================================
|
||
set -uo pipefail
|
||
|
||
SERIAL="${1:-xgfe65eimrrofyws}"
|
||
CFG="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/anti_detect/phantom_frida_config.json"
|
||
BIN_PATH="$(python3 -c "import json;print(json.load(open('$CFG'))['binary_path'])" 2>/dev/null || echo /data/local/tmp/fs_8e6b0b)"
|
||
BIN_NAME="$(basename "$BIN_PATH")"
|
||
PORT="$(python3 -c "import json;print(json.load(open('$CFG'))['listen_port'])" 2>/dev/null || echo 24781)"
|
||
INTERVAL="${KEEPALIVE_INTERVAL:-12}"
|
||
|
||
echo "[keepalive] serial=$SERIAL bin=$BIN_PATH port=$PORT (前台持有模式)"
|
||
|
||
# 前台持有模式:Mac 端阻塞运行 frida(adb shell 持有连接 → 子进程不收 SIGHUP)。
|
||
# 实测 `su -c 'nohup X &'` 后台化在本机型失效,前台持有最可靠;frida 被杀则循环重连。
|
||
while true; do
|
||
# 清理可能的端口占用残留(旧 frida-server / TIME_WAIT 实例)
|
||
adb -s "$SERIAL" shell "su -c 'pidof $BIN_NAME | xargs -r kill -9'" 2>/dev/null
|
||
echo "[keepalive $(date '+%H:%M:%S')] 前台启动 Phantom-Frida..."
|
||
# 阻塞:frida 活着则此行一直挂起;退出(被杀/崩溃)才返回
|
||
adb -s "$SERIAL" shell "su -c '$BIN_PATH -l 0.0.0.0:$PORT'" 2>&1
|
||
echo "[keepalive $(date '+%H:%M:%S')] Phantom-Frida 退出,${INTERVAL}s 后重连..."
|
||
sleep "$INTERVAL"
|
||
done
|