jshook 中文文档 下载 App

JsHook 的能力构成——Frida 注入层 + JsApi 扩展层

两层结构

JsHook 的所有能力可以清晰地分成两层:Frida 注入层(底层)和 JsApi 扩展层(上层)。两层叠加在一起,让你既可以用完整的 Frida API 做精细控制,又可以用 JsApi 里预封装好的接口快速完成常见操作。

┌─────────────────────────────────────────────┐
│           JsApi 扩展层(JsHook 自己加的)        │
│  modmenu / crypto / file / kernel / storage │
├─────────────────────────────────────────────┤
│           Frida 注入层(原生 Frida API)          │
│  Java.use / Interceptor / Module / Memory   │
├─────────────────────────────────────────────┤
│           Frida 运行时(fridamod / rhino)        │
└─────────────────────────────────────────────┘

Frida 注入层

这一层是 Frida 原生能力的完整暴露,提供:

典型 API:

Java.perform(function () {
    var MainActivity = Java.use('com.example.app.MainActivity');
    MainActivity.onCreate.overload('android.os.Bundle')
        .implementation = function (bundle) {
            console.log('[+] onCreate 被调用了');
            this.onCreate(bundle);
        };
});

JsApi 扩展层

Frida 只提供注入框架,日常开发中常用的操作(读写文件、加密解密、画 UI)需要自己拼。JsHook 内置了这些常用操作的封装,统一叫 JsApi。

模块能力
modmenuImGui 悬浮窗菜单,支持 switch/select/slider/button/input 等组件
moddrawImGui 直接绘制图形、文字
crypto常用加密解密(AES/DES/RSA/MD5/SHA)
file文件读写、目录操作
device设备信息(型号、系统版本、CPU、分辨率)
view视图操作、模拟点击、坐标定位
kernel内核模式下的内存读写(需 fridamod + 内核驱动)
memory守护进程 IPC 读写任意进程内存
storage本地键值存储
dialog弹窗输入、确认框
http / curl网络请求
canvas画布绘制
thread多线程控制
dexDEX 操作

两层怎么配合

通常的用法是:Frida API 做注入和 Hook 本身,JsApi 做配套操作。

举个例子——Hook 一个游戏的金币,在金币变化时弹窗提示:

Java.perform(function () {
    var GoldManager = Java.use('com.game.gold.GoldManager');
    GoldManager.setGold.implementation = function (amount) {
        var old = this.getGold();
        this.setGold(amount);  // 先调用原方法
        console.log('[+] 金币从 ' + old + ' 变成 ' + amount);
        // 用 JsApi 画悬浮窗
        toast('金币变化: ' + old + ' → ' + amount);
    };
});

注入和拦截用的是 Frida 的 Java.use() 和 implementation,弹窗提示用的是 JsApi 的 toast()。两层各干各的,互不干扰。

什么时候用哪层

更多细节: