Files
workphone-sdk/sdk/scripts/upgrade_wechat_and_oneclick.sh

60 lines
2.4 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# 红米工作机:等 ADB → 升级微信(arm64) → oneclick 恢复 Frida
# 用法: bash upgrade_wechat_and_oneclick.sh [serial] [apk_path]
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SERIAL="${1:-xgfe65eimrrofyws}"
WIFI="192.168.110.80:5555"
APK_DIR="/tmp/wechat_apk"
LOG="${LOG:-/tmp/wp_reconnect_upgrade.log}"
PREFERRED_APK="${2:-${APK_DIR}/weixin8069_arm64.apk}"
FALLBACK_APK="${APK_DIR}/weixin8056_arm64.apk"
MAX_ROUNDS="${MAX_ROUNDS:-120}"
mkdir -p "$APK_DIR"
echo "=== $(date) upgrade_wechat_and_oneclick serial=$SERIAL ===" | tee "$LOG"
pick_apk() {
if [[ -f "$PREFERRED_APK" ]] && [[ $(stat -f%z "$PREFERRED_APK" 2>/dev/null || stat -c%s "$PREFERRED_APK") -gt 50000000 ]]; then
echo "$PREFERRED_APK"; return
fi
if [[ -f "$FALLBACK_APK" ]]; then echo "$FALLBACK_APK"; return; fi
echo ""
}
resolve_dev() {
adb connect "$WIFI" >/dev/null 2>&1 || true
if adb devices 2>/dev/null | grep -q "${SERIAL}.*device"; then echo "$SERIAL"; return; fi
if adb devices 2>/dev/null | grep -q "${WIFI}.*device"; then echo "$WIFI"; return; fi
echo ""
}
for round in $(seq 1 "$MAX_ROUNDS"); do
DEV="$(resolve_dev)"
if [[ -n "$DEV" ]]; then
echo "$(date) FOUND $DEV" | tee -a "$LOG"
ABI=$(adb -s "$DEV" shell getprop ro.product.cpu.abi 2>/dev/null | tr -d '\r')
OLD=$(adb -s "$DEV" shell dumpsys package com.tencent.mm 2>/dev/null | grep versionName | head -1 | tr -d '\r' || true)
echo "ABI=$ABI OLD=$OLD" | tee -a "$LOG"
APK="$(pick_apk)"
if [[ -z "$APK" ]]; then
echo "无可用 APK请先下载到 $APK_DIR" | tee -a "$LOG"
exit 2
fi
echo "install $APK -> $DEV" | tee -a "$LOG"
adb -s "$DEV" install -r -d -t "$APK" 2>&1 | tee -a "$LOG" || true
NEW=$(adb -s "$DEV" shell dumpsys package com.tencent.mm 2>/dev/null | grep versionName | head -1 | tr -d '\r' || true)
echo "NEW=$NEW" | tee -a "$LOG"
TARGET="$SERIAL"
[[ "$DEV" == "$WIFI" ]] && TARGET="$DEV"
bash "${SCRIPT_DIR}/frida_workphone_oneclick.sh" -d "$TARGET" 2>&1 | tee -a "$LOG" || true
curl -s --max-time 20 "http://127.0.0.1:8899/api/v3/hook/probe/${SERIAL}" | tee -a "$LOG"
echo "=== DONE $(date) ===" | tee -a "$LOG"
exit 0
fi
echo "$(date) wait $round/$MAX_ROUNDS" >> "$LOG"
sleep 5
done
echo "TIMEOUT: 未检测到 ADB请插 Type-C 并授权 USB 调试" | tee -a "$LOG"
exit 1