Files
workphone-sdk/sdk/scripts/setup_frida.sh
Manus AI 42fe10401a 1
1
2026-05-24 17:50:04 +08:00

86 lines
2.5 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.

#!/bin/bash
# setup_frida.sh — 一键安装 Frida Server 到 Root Android 设备
#
# 用法:
# ./scripts/setup_frida.sh [device_serial]
#
# 前置条件:
# - 设备已 RootMagisk
# - ADB 已连接且授权
# - Python 已安装 frida-toolspip install frida-tools
set -e
DEVICE_ARG=""
if [ -n "$1" ]; then
DEVICE_ARG="-s $1"
fi
echo "=== 机擎 SDK — Frida Server 安装脚本 ==="
# 1. 获取 Frida 版本(与 Python frida 包一致)
FRIDA_VERSION=$(python3 -c "import frida; print(frida.__version__)" 2>/dev/null)
if [ -z "$FRIDA_VERSION" ]; then
echo "❌ Python frida 未安装,先执行: pip install frida-tools"
exit 1
fi
echo "✅ 本机 Frida 版本: $FRIDA_VERSION"
# 2. 获取设备架构
ABI=$(adb $DEVICE_ARG shell getprop ro.product.cpu.abi)
echo "✅ 设备架构: $ABI"
case "$ABI" in
arm64-v8a) ARCH="arm64" ;;
armeabi-v7a) ARCH="arm" ;;
x86_64) ARCH="x86_64" ;;
x86) ARCH="x86" ;;
*) echo "❌ 不支持的架构: $ABI"; exit 1 ;;
esac
# 3. 下载 frida-server
FILENAME="frida-server-${FRIDA_VERSION}-android-${ARCH}"
URL="https://github.com/frida/frida/releases/download/${FRIDA_VERSION}/${FILENAME}.xz"
TMPDIR="/tmp/frida_setup"
mkdir -p "$TMPDIR"
if [ ! -f "$TMPDIR/$FILENAME" ]; then
echo "📥 下载 frida-server..."
curl -L -o "$TMPDIR/${FILENAME}.xz" "$URL"
xz -d "$TMPDIR/${FILENAME}.xz"
fi
echo "✅ frida-server 已就绪: $TMPDIR/$FILENAME"
# 4. 推送到设备
echo "📤 推送到设备 /data/local/tmp/frida-server ..."
adb $DEVICE_ARG push "$TMPDIR/$FILENAME" /data/local/tmp/frida-server
adb $DEVICE_ARG shell "su -c 'chmod 755 /data/local/tmp/frida-server'"
echo "✅ 已推送并赋权"
# 5. 启动 frida-server
echo "🚀 启动 frida-server ..."
adb $DEVICE_ARG shell "su -c 'pkill -f frida-server || true'" 2>/dev/null || true
adb $DEVICE_ARG shell "su -c 'nohup /data/local/tmp/frida-server >/dev/null 2>&1 &'"
sleep 2
# 6. 验证
echo "🔍 验证连接..."
PONG=$(python3 -c "
import frida
try:
d = frida.get_usb_device(timeout=5)
print(f'✅ Frida 已连接设备: {d.name}')
procs = len(d.enumerate_processes())
print(f'✅ 检测到 {procs} 个进程')
except Exception as e:
print(f'❌ 连接失败: {e}')
" 2>&1)
echo "$PONG"
echo ""
echo "=== 安装完成 ==="
echo "后续使用:"
echo " 1. Agent 启动时会自动通过 FridaManager 连接"
echo " 2. 或手动测试: frida -U -n com.tencent.mm"
echo " 3. SDK 调用: POST /api/v3/message/send {\"channel\": \"hook\", ...}"