Files
vwvw dd67f20b8d feat: 自动化脚本增强
1. 多端口适配;
2. 允许命令行指定端口;
3. 临时配置使用系统临时目录, 使用后删除;
2025-10-20 17:42:12 +08:00
..
2025-10-20 17:42:12 +08:00

Auto Config Tool for Zygisk-MyInjector

自动配置工具,通过交互式命令行快速配置应用注入。

功能特性

  • 🎯 交互式设备选择(支持多设备)
  • 🔍 Tab 自动补全选择应用包名(支持模糊搜索)
  • ⚙️ 交互式 Gadget 配置Server/Script 模式)
  • 📦 自动下载 Frida Gadget 16.0.7(自动检测设备架构)
  • 📦 自动生成配置文件
  • 🚀 一键推送并应用配置

安装依赖

pip install prompt_toolkit

使用方法

基本用法

./auto_config.py

工作流程

  1. 设备选择

    • 自动检测连接的设备
    • 单设备时自动选择
    • 多设备时交互式选择
  2. 应用选择

    • 可选是否包含系统应用(默认仅第三方应用)
    • 使用 Tab 键自动补全包名
    • 支持模糊搜索过滤
  3. Gadget 配置

    • 指定 Gadget 名称(默认 libgadget.so

    • Server 模式:监听端口等待 Frida 连接

      • 监听地址(默认 0.0.0.0
      • 监听端口(默认 27042
      • 端口冲突处理fail/ignore/close默认 fail
      • 加载行为resume/wait默认 resume
    • Script 模式:执行本地脚本

      • 脚本路径(默认 /data/local/tmp/script.js
  4. Frida Gadget 检查与安装

    • 自动检查设备上是否已安装 Gadget
    • 如未安装,自动下载 Frida Gadget 16.0.7
    • 根据设备架构选择正确版本arm64/arm/x86/x86_64
    • 自动解压并安装到模块 SO 库
  5. 配置部署

    • 自动生成 config.json 和 gadget 配置文件
    • 推送到设备 /data/local/tmp
    • 发送广播触发应用配置

示例会话

============================================================
Zygisk-MyInjector Auto Config Tool
============================================================

Using device: 192.168.1.100:5555 (OnePlus)

=== Loading app packages ===
Include system apps? (y/N): n
Found 156 packages

=== Select Target App ===
Tip: Use Tab for auto-completion, type to filter
Package name: com.example.app
Selected: com.example.app

=== Gadget Configuration ===
Gadget SO name (default: libgadget.so): 
libgadget.so

Select mode:
1. Server mode (listen for connections)
2. Script mode (execute script)
Mode (1/2, default: 1): 1

Listen address (default: 0.0.0.0): 
Listen port (default: 27042): 

Port conflict behavior:
1. fail - Exit if port is in use
2. ignore - Continue anyway
3. close - Close existing connection
On port conflict (1/2/3, default: 1): 1

On load behavior:
1. resume - Continue immediately (recommended)
2. wait - Wait for connection (for debugging)
On load (1/2, default: 1): 1

=== Generating Configuration Files ===
...

✓ Configuration applied successfully!

The app 'com.example.app' has been configured.
You can now use Frida to connect to the app:
  frida -H 0.0.0.0:27042 -n <process-name>

生成的文件

脚本会生成以下文件:

  1. config.json

    • 模块主配置文件
    • 存储位置:/data/adb/modules/zygisk-myinjector/config.json
  2. gadget 配置文件

    • 格式:libgadget.config.so
    • 存储位置:/data/data/<package>/files/libgadget.config.so

广播接收器

配置通过广播接收器应用:

注意ConfigApplyReceiver 现在使用动态注册方式,第三方 app 无法通过 PackageManager 发现其存在。 同时增加了 UID 权限检查,只允许 shell (2000) 或 root (0) 发送广播。

# 手动发送广播示例
adb shell am broadcast \
  -n com.jiqiu.configapp/.ConfigApplyReceiver \
  -a com.jiqiu.configapp.APPLY_CONFIG \
  --es package_name "com.example.app" \
  --es tmp_config_path "/data/local/tmp/zygisk_config.json" \
  --es tmp_gadget_config_path "/data/local/tmp/libgadget.config.so"

调试

查看日志:

adb logcat -s ConfigApplyReceiver:* ConfigManager:*

故障排除

prompt_toolkit 未安装

Error: prompt_toolkit is required. Install it with:
  pip install prompt_toolkit

解决方案:运行 pip install prompt_toolkit

没有设备连接

Error: No devices found. Please connect a device and enable USB debugging.

解决方案

  1. 通过 USB 或 WiFi 连接设备
  2. 确保已启用 USB 调试
  3. 运行 adb devices 确认设备已连接

广播发送失败

解决方案

  1. 确保 configapp 已安装
  2. 确保设备已 root
  3. 检查 logcat 日志获取详细错误信息

高级用法

仅生成配置不部署

修改广播命令添加 deploy_only 参数:

adb shell am broadcast \
  -n com.jiqiu.configapp/.ConfigApplyReceiver \
  -a com.jiqiu.configapp.APPLY_CONFIG \
  --es package_name "com.example.app" \
  --es tmp_config_path "/data/local/tmp/zygisk_config.json" \
  --ez deploy_only true

注意事项

  1. ⚠️ 设备必须已 root
  2. ⚠️ configapp 必须已安装
  3. SELinux 会自动检查并设置为 Permissive 模式(脚本会自动处理)
  4. ⚠️ 首次使用会自动下载 Frida Gadget 16.0.7(需要网络连接)
  5. ⚠️ 配置完成后需要重启目标应用才能生效
  6. ⚠️ 需要安装 xz 工具用于解压macOS 通过 brew install xz 安装)

SELinux 问题

Zygisk 模块需要读取 /data/adb/modules/zygisk-myinjector/config.json,但 SELinux 默认会阻止 zygote 进程访问。

自动处理 auto_config.py 脚本会自动检查 SELinux 状态,如果处于 Enforcing 模式会提示设置为 Permissive。

手动设置(重启后需重新设置):

adb shell "su -c 'setenforce 0'"

永久解决方案(需要 Magisk 模块): 创建 SELinux 策略或修改模块实现方式。

完整工作流程

# 1. 运行自动配置脚本(会自动检查并设置 SELinux
cd scripts
./auto_config.py

# 2. 按提示选择设备、应用和配置(全部使用默认值即可)
#    脚本会自动完成:
#    - 生成配置文件
#    - 推送到设备
#    - 应用配置
#    - 重启应用
#    - 端口转发
#    - 快速测试

# 3. 如果测试成功,直接使用 Frida 连接
frida -H 127.0.0.1:27042 Gadget -l your_script.js

快速测试示例

# 测试连接
frida -H 127.0.0.1:27042 Gadget -e "console.log('Connected! PID:', Process.id)"

# 列举模块
frida -H 127.0.0.1:27042 Gadget -e "Process.enumerateModules().forEach(m => console.log(m.name))"