jshook 中文文档 下载 App

内核驱动版本匹配与 .ko 模块——每换内核就要重新激活

为什么要版本匹配

Linux 内核版本和内核模块(.ko)是严格绑定的——内核模块编译时用的是特定版本的内核头文件,不同内核版本的模块不能混装。

内核 4.19.157-perf+ → 需要 4.19.157 编译出来的 jshook.ko
内核 5.10.89-android12+ → 需要 5.10.89 编译出来的 jshook.ko

如果模块和内核版本不匹配,insmod 时会直接报错。

JsHook 怎么处理

激活流程里这一步完全自动化:

  1. 读 /proc/version 或执行 uname -r → 拿到当前内核版本
  2. 在已部署的内核驱动包中找版本号匹配的 .ko
  3. 加载进内核
  4. 驱动成功加载 → 内核驱动模式可用

整个过程几秒钟,用户感知不到。

什么情况下需要重新激活

以下操作会改变内核版本,导致之前激活部署的 .ko 失效:

操作内核版本变化需要重新激活
升级 Android 系统(OTA)可能变✅ 建议重新激活
刷入新 ROM一定变✅ 必须重新激活
Magisk / KernelSU 更新内核可能变✅ 重新激活保险
切换虚拟机 / 模拟器实例内核不同✅ 新实例里重新激活
小版本系统补丁通常不变视内核版本号而定

怎么确认内核版本变了

adb shell uname -r
# 之前是 4.19.157-perf+
# 现在是 5.10.101-android13-xxx  ← 变了

或者在 JsHook 激活日志里看——激活时会打印当前内核版本和加载的 .ko 文件名。

重新激活的流程

  1. 确认脚本和订阅都备份好了
  2. 打开 JsHook
  3. 进设置,找「清数据」或直接系统设置里清应用数据
  4. 可选:手动删 /data/adb/jshook/ 确保干净
  5. 重新点激活

小版本升级(Android 安全补丁、Magisk 小版本)通常不用手动清,重新激活就行。

找不到对应 .ko 怎么办

极少数设备的内核版本不在 JsHook 提供的驱动列表里:

这种情况下:

  1. 激活本身还是会成功(基础注入不需要内核驱动)
  2. 只是内核驱动模式开关打开时会报错
  3. 正常用普通 fridamod 注入就行,不受影响
  4. 去 JsHook GitHub Issue 或 Telegram 群反馈你的内核版本号

查内核驱动状态的命令

# 查内核版本
adb shell uname -r

# 查驱动是否已加载
adb shell su -c lsmod | grep jshook
adb shell su -c cat /proc/modules | grep jshook

# 查部署的驱动文件
adb shell su -c ls -la /data/adb/jshook/.kernel/

# 查内核日志
adb shell su -c dmesg | grep jshook