jshook 中文文档 下载 App

框架与脚本类型匹配——rhino 脚本不能配 frida 框架

核心规则

rhino 类型脚本不能配 frida 系框架(fridamod / fridainject / fridagadget),反之亦然。两套脚本走完全不同的注入路径。

两套系统

┌──────────────────────────────────────────────────────┐
│              JsHook 脚本系统                              │
├───────────────────────┬──────────────────────────────┤
│   rhino 类型脚本        │     frida 类型脚本              │
│   ──────────          │     ────────────             │
│   rhino 引擎运行        │     fridamod / fridainject    │
│   只能 Hook Java 层     │     / fridagadget           │
│   Xposed 风格 API       │     Java 层 + native 层       │
│                       │     Frida API + JsApi          │
│   走 rhino 专属框架     │     支持内核驱动模式 / 加密    │
└───────────────────────┴──────────────────────────────┘

怎么判断脚本类型

脚本仓库的 JSON 里每条脚本有一个 type 字段:

{
    "id": "abc123",
    "title": "金币修改",
    "type": "frida",     // 或 "rhino"
    "version": "1.0.0",
    "url": "https://example.com/gold.js"
}

JsHook 界面里显示脚本时会标注类型。手动导入脚本时需要你自己选类型。

框架选择界面的提示

在应用详情页选框架时,JsHook 会根据你勾选的脚本类型自动过滤可选框架:

实际使用中建议一个应用只选一种脚本类型,避免两套引擎同时跑的复杂度。

写脚本前先确定类型

不同类型的脚本能用的 API 天差地别:

APIrhino 脚本frida 脚本
Java.use()❌✅
Interceptor.attach()❌✅
Module.findBaseAddress()❌✅
Xposed 风格静态辅助✅❌
modmenu.create()视引擎而定✅
内核驱动 API❌✅(fridamod + 内核模式)

不确定自己写的是哪种类型?看你用的 API:

加密脚本只能选 fridamod

加密脚本是 frida 类型脚本的子集,但有额外限制:只能配合 fridamod 框架运行。fridainject 和 fridagadget 不支持加密脚本。

更多加密脚本细节见 脚本加密。