jshook 中文文档 下载 App

内核驱动模式——不注入目标进程也能读写内存

一句话说清

普通模式下 Frida 把 JS 引擎注入到目标应用进程内。内核驱动模式下不注入目标进程——而是克隆一个独立的观察者进程跑脚本,通过 JsHook 激活时部署的 .ko 内核驱动模块直接读写字节码内存。

工作原理对比

普通 fridamod 模式:
┌──────────────────────────────┐
│   目标应用进程                 │
│   ├─ App 原始代码             │
│   └─ Frida JS 引擎 ← 你的脚本  │  ← 在目标进程内
└──────────────────────────────┘

内核驱动模式:
┌──────────────────────────────┐     ┌──────────────────────────────┐
│   目标应用进程                 │     │   观察者进程(JsHook 克隆)    │
│   └─ App 原始代码             │     │   └─ Frida JS 引擎 ← 你的脚本  │
└──────────────────────────────┘     └──────────────┬───────────────┘
        ↑ 读写内存             ↑                     │
        │                      │                     │
┌───────┴──────────────────────┴─────────────────────┴───────────────┐
│                    JsHook 内核驱动 .ko 模块                        │
│         提供 getModuleBase / readDword / writeDword 等 API         │
└───────────────────────────────────────────────────────────────────┘

优势

方面说明
更难被反作弊检测目标进程内没有注入痕迹
不影响目标应用稳定性观察者进程崩溃不影响目标应用
读写任意内存内核驱动可以读写目标进程的任意地址

启用前提

  1. JsHook 已激活(激活时自动匹配并加载内核版本对应的 .ko 驱动模块)
  2. 目标应用的框架选 fridamod(内核模式是 fridamod 专属)
  3. 在目标应用的 Hook 配置里打开 内核模式 开关
  4. 目标应用正在运行

启用步骤

  1. 打开 JsHook
  2. 进 应用 → 选目标应用
  3. 选框架为 fridamod
  4. 勾选脚本
  5. 打开内核模式开关
  6. 开 Hook 服务
  7. 重启目标应用

脚本里判断运行环境

脚本可能在普通模式和内核模式下跑同一套逻辑,用 runtime.isKernel 判断:

if (runtime.isKernel) {
    // 内核模式:用 kernel API
    var base = kernel.getModuleBase('libil2cpp.so');
} else {
    // 普通模式:用 Frida API
    var base = Module.findBaseAddress('libil2cpp.so');
}

局限性

内核模式下观察者进程和目标进程物理隔离,以下功能不可用:

可用/不可用 API 完整清单见 内核模式可用/不可用 API。