首页
社区
课程
招聘
[原创]Frida spawn 小米设备 超时问题排查与解决
发表于: 2026-7-29 12:54 410

[原创]Frida spawn 小米设备 超时问题排查与解决

2026-7-29 12:54
410

Frida spawn 超时问题排查与解决


**发布时间:** 2026-07-29

**设备环境:** 小米 2211133C (Android 15)

**Root 方案:** KernelSU


---


## 问题现象


启动 frida-server 后,使用 `device.spawn()``frida -U -f <package>` 时报错:


Failed to spawn: unexpectedly timed out while waiting for signal from process with PID xxx


或者 Python 版本:


frida.TimedOutError: unexpectedly timed out while waiting for signal from process with PID xxx



更严重的情况:启动 frida-server 后手机直接重启,logcat 显示 zygote64 收到 SIGABRT 信号。


---


## 排查过程


### 第一步:排除 SELinux 和 systemhelper


查看日志发现:

- `com.mobiletools.systemhelper`(小米系统安全助手)在 app 启动时介入

- zygote64 收到 SIGABRT 后触发系统重启


但实际测试发现:

- SELinux 已经是 Permissive 模式

- **attach 模式(`frida -U -p <PID>`)完全正常**

- 只有 spawn 模式失败


这说明问题不在 SELinux 或 systemhelper,而是 spawn 机制本身的问题。


### 第二步:发现 USAP 是关键


查阅 GitHub issues 发现大量讨论指向 **USAP(Unspecialized App Process)**

- [frida/frida#2516](f2dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5c8X3k6J5K9h3c8S2i4K6u0r3K9i4y4K6N6h3g2K6i4K6u0r3x3U0f1I4y4R3`.`.)

- 多个 Android 10+ 设备报告此问题


验证设备状态:



adb shell "getprop | grep usap"



输出:

[dalvik.vm.usap_pool_enabled]: [false]
[persist.sys.dynamic_usap_enabled]: [true]
[persist.sys.usap_pool_enabled]: [true]


**确认 USAP 已启用,这就是根因。**


---


## 什么是 USAP?


USAP(Unspecialized App Process)是 Android 10 引入的进程预 fork 机制,用于加速 app 启动。


### 传统模式(zygote fork)

App 启动请求
↓
ActivityManager 发送请求到 zygote
↓
zygote fork 出新进程
↓
新进程加载 app 代码


### USAP 模式(预 fork 池)

系统启动时预 fork 多个进程到池中
↓
App 启动请求
↓
ActivityManager 直接从池中取一个进程
↓
跳过 zygote fork 步骤,加速启动


### Frida spawn 的工作原理

frida spawn 请求
↓
frida 监控 zygote fork 事件
↓
等待 zygote fork 出新进程
↓
自动 attach 到新进程


**冲突点:** USAP 绕过了 zygote fork,Frida 收不到信号,超时。


---


## 解决方案


### 临时方案(重启失效)

# 关闭 USAP
adb shell "su -c 'setprop persist.sys.usap_pool_enabled false'"
adb shell "su -c 'setprop persist.sys.dynamic_usap_enabled false'"
adb shell "su -c 'setprop persist.device_config.runtime_native.usap_pool_enabled false'"

# 重启 frida-server
adb shell "su -c 'pkill -9 fs64'"
adb shell "su -c '/data/local/tmp/fs64 -D'"


验证:

adb shell "getprop | grep usap"
# 应该全部显示 false

### 永久方案(推荐)


写入 KernelSU/Magisk 的开机启动脚本:



#### KernelSU


adb shell "su -c 'cat > /data/adb/service.d/disable_usap.sh'" << 'EOFX'
#!/system/bin/sh
# 关闭 USAP 进程池,修复 Frida spawn 超时问题
setprop persist.sys.usap_pool_enabled false
setprop persist.sys.dynamic_usap_enabled false
setprop persist.device_config.runtime_native.usap_pool_enabled false
EOFX

adb shell "su -c 'chmod +x /data/adb/service.d/disable_usap.sh'"



#### Magisk


adb shell "su -c 'cat > /data/adb/post-fs-data.d/disable_usap.sh'" << 'EOFX'
#!/system/bin/sh
setprop persist.sys.usap_pool_enabled false
setprop persist.sys.dynamic_usap_enabled false
setprop persist.device_config.runtime_native.usap_pool_enabled false
EOFX

adb shell "su -c 'chmod +x /data/adb/post-fs-data.d/disable_usap.sh'"



---


## 验证修复


重启后检查:




所有 USAP 相关属性应为 `false`


测试 spawn:


import frida
device = frida.get_usb_device()
pid = device.spawn('com.example.app')
print(f'Spawn successful, PID={pid}')

或使用命令行:

frida -U -f com.example.app --no-pause


---


## 常见问题


### Q1: 关闭 USAP 会影响性能吗?


**A:** 轻微影响。USAP 的主要作用是加速 app 启动(跳过 zygote fork),关闭后启动速度可能慢 50-100ms,日常使用几乎无感知。对于逆向分析场景,这点性能损失完全可以接受。


### Q2: 为什么 attach 模式不受影响?


**A:** attach 模式(`frida -U -p <PID>`)是直接注入已运行的进程,不涉及进程创建,所以不依赖 zygote fork 事件。


### Q3: 还有其他可能导致 spawn 失败的原因吗?


**A:** 是的,包括但不限于:

- **SELinux Enforcing 模式**:阻止 ptrace 注入

- **厂商安全模块**:如小米 systemhelper、华为 TrustSpace

- **App 内置反调试**:检测 frida 后主动退出

- **Root 权限配置**:Magisk/KernelSU 的超级用户访问权限设置


---


## 完整排查清单


遇到 Frida spawn 超时时,按顺序检查:


1. **确认 USAP 状态**

adb shell "getprop | grep usap"



2. **检查 SELinux**

adb shell "getenforce"
# 应为 Permissive


3. **测试 attach 模式**

adb shell am start -n <package>/<activity>
sleep 3
frida -U -p <PID>


4. **查看 logcat 崩溃信息**

adb logcat -v time | grep -E "frida|panic|reboot|fatal|kill"


5. **检查 Root 框架配置**

- Magisk:超级用户 → 超级用户访问权限

- KernelSU:查看 `/data/adb/ksu/.allowlist`


---


## 参考资料


- [Frida GitHub Issue #2516](d3fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5c8X3k6J5K9h3c8S2i4K6u0r3K9i4y4K6N6h3g2K6i4K6u0r3x3U0f1I4y4R3`.`.)

- [Android USAP 机制分析](3f7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6L8%4g2J5j5$3g2Q4x3X3g2S2L8X3c8J5L8$3W2V1i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0U0M7#2)9J5c8X3y4G2M7X3g2Q4x3V1k6J5N6h3&6@1K9h3#2W2i4K6u0r3N6i4y4S2M7l9`.`.)

- [Frida 官方文档 - Spawning](c08K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6X3M7X3W2V1j5g2)9J5k6i4u0W2i4K6u0r3k6r3!0U0M7#2)9J5c8Y4y4H3j5i4N6F1K9h3&6Y4i4K6u0r3)


---


**标签:** Frida, Android逆向, USAP, spawn超时, KernelSU, Magisk




冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 2026-7-29 20:48 被mb_cylxfmot编辑 ,原因: 修改排版
收藏
免费 2
打赏
分享
最新回复 (2)
雪    币: 3009
活跃值: (2870)
能力值: (RANK:140 )
在线值:
发帖
回帖
粉丝
2
重新编辑一下,修改一下格式吧。这格式、颜色,看着好难受呀
2026-7-29 15:42
1
雪    币: 229
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
fyrlove 重新编辑一下,修改一下格式吧。这格式、颜色,看着好难受呀
见谅哈 已经修改了
2026-7-29 20:49
0
游客
登录 | 注册 方可回帖
返回