jshook 中文文档 下载 App

改了脚本没反应——逐项确认 Hook 开关、框架类型和重启

最常见的四个原因

按出现频率排序:

  1. 没重启目标应用 → 概率 90%
  2. Hook 服务关着 → 概率 5%
  3. 框架和脚本类型不匹配 → 概率 3%
  4. 脚本文件没保存 / 路径不对 → 概率 2%

逐项确认清单

① 目标应用重启了吗

脚本注入发生在目标应用启动时。改完脚本后没有重启目标应用,进程里跑的还是旧脚本。

确认方式:强制停止目标应用 → 重新打开。看到应用从冷启动开始(开屏动画)。

② Hook 服务开着吗

JsHook 应用详情页里目标应用的 Hook 服务开关必须是打开状态。开关关掉的话,目标应用启动时不会触发任何注入。

Hook 服务开关在:JsHook → 应用列表 → 点目标应用 → 详情页 → Hook 服务开关。

③ 框架和脚本类型匹配吗

两个硬规则:

fridamod 默认推荐但只认 frida 类型脚本。如果你用的是 rhino 脚本(Xposed 风格 API),要选对应的 rhino 框架选项。

判断方法:看脚本里用的 API。用了 Java.use() / Interceptor → frida 类型。用了 Xposed 静态方法 → rhino 类型。

④ 脚本文件真的改对了吗

验证 Hook 是不是真的生效

以上都确认了还是没反应?加一行日志验证 Hook 到底有没有跑:

Java.perform(function () {
    console.log('[★★★] Hook 脚本开始运行 ★★★');
    console.log('[★★★] 当前应用: ' + runtime.packageName);
    
    var Shop = Java.use('com.example.Shop');
    console.log('[★★★] Shop 类找到: ' + Shop.$className);
    
    Shop.buy.implementation = function (itemId) {
        console.log('[★★★] buy 被调用了!itemId: ' + itemId);
        return this.buy(itemId);
    };
});

重启目标应用后看 JsHook 日志面板。如果能看到 [★★★] 开头的日志行,说明 Hook 跑起来了——问题在脚本逻辑里。如果连 [★★★] Hook 脚本开始运行 ★★★ 都看不到,说明脚本根本没跑,回头检查前面的确认清单。

终极武器:空脚本测试

把脚本内容全部删掉,只留一行:

console.log('[TEST] 空脚本也能跑');

勾选这个空脚本 → 重启目标应用 → 看日志里有没有 [TEST]。