免 root 路线——LSPatch 修补 + JsHook 双应用后台
这条路从哪来
免 root 路线不是 JsHook 官方文档里写的路线,是社区用户探索出来的一种低成本方案。核心思路是:
- JsHook 和 LSPatch 两个 App 都装在手机上、后台常驻
- 用 LSPatch 把 FridaGadget 注入到目标应用的 APK 里
- 修补后的 APK 安装到手机上
- JsHook 切到「免 ROOT 模式」,配合修补后的 APK 工作
适用场景
- 主力机不方便解锁 bootloader
- 短期试玩、想先跑通流程再决定要不要 root
- 目标应用加固不特别强
代价
这条路不是免费午餐:
- JsHook + LSPatch 两个 App 都要后台常驻,耗电更高
- 目标应用每次更新都要重新修补 APK
- 加固强的应用可能修补后直接闪退或检测到注入环境
- 不是所有脚本都能正常工作,部分依赖内核驱动或守护进程 IPC 的 API 不可用
- 社区实践性质,出了问题需要自己排查
操作步骤
第一步:安装 LSPatch
LSPatch 是一个 APK 修补工具,需要单独下载安装(不是 JsHook 自带)。
第二步:修补目标应用
- 打开 LSPatch
- 选择要修补的目标应用 APK
- 添加 FridaGadget 模块
- 设置输出路径,开始修补
- 修补完成,得到一个新的 APK 文件
第三步:安装修补后的 APK
先卸载原来的目标应用(签名不同,不能覆盖安装),再装修补后的 APK。
第四步:JsHook 切免 ROOT 模式
- 打开 JsHook
- 进设置,切换到「免 ROOT 模式」
- 下载 FridaMod(Gumjs) 设为全局默认
- 正常选目标应用、勾选脚本、开 Hook 服务
第五步:跑起来
先打开 JsHook 并保持在后台,再打开修补后的目标应用。脚本会自动注入。
常见问题
修补后的 APK 装不上
通常是签名问题。LSPatch 修补后会重新签名,需要先卸载原版再装。
目标应用检测到注入环境
加固强的应用会检测 FridaGadget 的特征字符串。这种情况下:换一种注入方式、或者放弃这条路用虚拟机。
脚本没反应
优先排查:
- JsHook 是不是真的开了免 ROOT 模式
- FridaMod(Gumjs) 有没有正确下载
- 修补 APK 时 FridaGadget 模块有没有加上
- 目标应用是不是在 JsHook 之后打开的(顺序反了就注入不上)
和 root 路线的对比
| 方面 | root 路线 | 免 root 路线 |
|---|---|---|
| 稳定性 | 高,官方支持 | 低,社区实践 |
| 内核驱动模式 | 支持 | 不支持 |
| JsApi 完整度 | 完整 | 部分 API 不可用 |
| 应用更新成本 | 无 | 每次更新重新修补 |
| 后台占用 | 一个 App | 两个 App |
| 适合度 | 主力路线 | 低成本试错 |