92 lines
3.0 KiB
Bash
Executable File
92 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
||
# 生成通用安装包(APK + Agent + Hook 脚本 + 安装说明)
|
||
|
||
set -euo pipefail
|
||
|
||
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
DIST_DIR="$ROOT_DIR/dist/universal"
|
||
PKG_NAME="workphone-universal-$(date +%Y%m%d-%H%M%S)"
|
||
PKG_DIR="$DIST_DIR/$PKG_NAME"
|
||
|
||
mkdir -p "$PKG_DIR"
|
||
|
||
echo "== 1) 构建 Android APK =="
|
||
cp "$ROOT_DIR/agent/hook/wechat_hook_v2.js" "$ROOT_DIR/android-app/app/src/main/assets/wechat_hook_v2.js"
|
||
cp "$ROOT_DIR/agent/hook/wechat_version_compat.json" "$ROOT_DIR/android-app/app/src/main/assets/wechat_version_compat.json"
|
||
pushd "$ROOT_DIR/android-app" >/dev/null
|
||
export JAVA_HOME="${JAVA_HOME:-$(/usr/libexec/java_home -v 21)}"
|
||
export PATH="$JAVA_HOME/bin:$PATH"
|
||
./gradlew assembleRelease --no-daemon \
|
||
-x lintVitalAnalyzeRelease -x lintVitalReportRelease -x lintVitalRelease
|
||
popd >/dev/null
|
||
|
||
APK_PATH="$ROOT_DIR/android-app/app/build/outputs/apk/release/app-release.apk"
|
||
if [[ ! -f "$APK_PATH" ]]; then
|
||
echo "APK 未生成: $APK_PATH"
|
||
exit 1
|
||
fi
|
||
|
||
echo "== 2) 打包 Agent =="
|
||
pushd "$ROOT_DIR/agent" >/dev/null
|
||
bash package.sh
|
||
popd >/dev/null
|
||
|
||
cp "$APK_PATH" "$PKG_DIR/workphone-agent-release.apk"
|
||
cp "$ROOT_DIR/agent/dist/agent.tar.gz" "$PKG_DIR/agent.tar.gz"
|
||
cp "$ROOT_DIR/agent/install.sh" "$PKG_DIR/install.sh"
|
||
cp "$ROOT_DIR/agent/hook/wechat_hook_v2.js" "$PKG_DIR/wechat_hook_v2.js"
|
||
cp "$ROOT_DIR/agent/hook/wechat_version_compat.json" "$PKG_DIR/wechat_version_compat.json"
|
||
cp "$ROOT_DIR/scripts/frida-server-17.8.1-android-arm64" "$PKG_DIR/frida-server-17.8.1-android-arm64"
|
||
cp "$ROOT_DIR/scripts/frida-gadget-17.8.1-android-arm64.so" "$PKG_DIR/frida-gadget-17.8.1-android-arm64.so"
|
||
|
||
python3 "$ROOT_DIR/scripts/wechat_release_gate.py" \
|
||
--apk "$APK_PATH" \
|
||
--agent-archive "$ROOT_DIR/agent/dist/agent.tar.gz" \
|
||
--json-out "$PKG_DIR/release-gate.json"
|
||
|
||
cat > "$PKG_DIR/INSTALL.md" <<'EOF'
|
||
# WorkPhone 通用安装包
|
||
|
||
包含:
|
||
- `workphone-agent-release.apk`:Android 设备端 App
|
||
- `agent.tar.gz`:Termux Python Agent 包
|
||
- `install.sh`:Termux 一键安装脚本
|
||
- `wechat_hook_v2.js`:微信 Hook 脚本
|
||
- `wechat_version_compat.json`:微信版本兼容矩阵
|
||
- `frida-server-17.8.1-android-arm64` / `frida-gadget-17.8.1-android-arm64.so`:arm64 Hook 资产
|
||
|
||
## 1)WSS Agent 无线更新 App
|
||
|
||
```bash
|
||
# 由设备端 Agent 通过 WSS 文件通道分片传输并执行安装
|
||
# 使用既有 WSS Agent 文件通道分片传输并执行安装,不使用 USB、Type-C 或主机 ADB。
|
||
```
|
||
|
||
## 2)安装 Agent(Termux)
|
||
|
||
```bash
|
||
curl -sL http://<server>:8899/install.sh | bash -s -- --server ws://<server>:8899/ws/device
|
||
```
|
||
|
||
## 3)部署 Hook 脚本
|
||
|
||
```bash
|
||
curl -s -X POST "http://<server>:8899/api/v3/scripts?module_id=wechat_hook_v2&version=3.1.0" \
|
||
-F "file=@wechat_hook_v2.js"
|
||
```
|
||
|
||
## 4)无线 Hook 能力探测
|
||
|
||
```bash
|
||
curl -s "http://<server>:8899/api/v3/devices/<device_id>/modules"
|
||
```
|
||
|
||
当返回 `supports_hook=true` 且 `frida_version` 有值,表示 Hook 环境可用。
|
||
EOF
|
||
|
||
tar czf "$DIST_DIR/${PKG_NAME}.tar.gz" -C "$DIST_DIR" "$PKG_NAME"
|
||
|
||
echo "完成:"
|
||
echo "目录包: $PKG_DIR"
|
||
echo "压缩包: $DIST_DIR/${PKG_NAME}.tar.gz"
|