jshook 中文文档 下载 App

rhino 与 frida 双引擎——两套写法各自擅长什么

为什么有两套

JsHook 同时内置两套 JavaScript 运行时:rhino 引擎和 Frida 引擎。这不是功能重复,而是覆盖两类不同的用户群体:

两套引擎各自独立运行,不会在同一个脚本里混用。每个脚本在声明时就要确定是 rhino 类型还是 frida 类型。

rhino 引擎

rhino 是一个纯 Java 实现的 JavaScript 引擎,JsHook 在它上面封装了一套 Xposed 风格的 API。

特点:

适合场景:

注意:rhino 类型脚本不能和 frida 系框架(fridamod / fridainject / fridagadget)配合使用。rhino 脚本走的是另一套注入路径。

Frida 引擎

Frida 引擎是完整的 Frida JS API 实现,通过 fridamod / fridainject / fridagadget 三种框架注入。

特点:

适合场景:

怎么区分脚本类型

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

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

type 取值:rhino 或 frida。

JsHook 在给目标应用配置 Hook 服务时,会根据你勾选的脚本类型自动匹配可用框架——rhino 类型脚本只走 rhino 引擎,frida 类型脚本走 frida 系框架。如果选了不匹配的框架,会提示框架与脚本类型不兼容。

两套引擎的 API 不能混用

这是新手最容易踩的坑之一:

写脚本之前先确认自己用的是哪种引擎,然后按对应的 API 文档写。

选哪个

条件推荐引擎
只会 Xposed 写法,不会 Fridarhino
需要 native 层 HookFrida
需要内核驱动模式Frida(配合 fridamod)
需要加密脚本Frida(配合 fridamod)
需要电脑端联动Frida
目标应用是 Unity(IL2CPP)Frida
只是 Hook 一些 Java 方法改改返回值都行,看你熟悉哪套