Skip to content

ZYPyDoki/Gg_Docking_Kernel

Repository files navigation

Platform Drivers Hook

🚀 Gg_Docking_Kernel

Universal Kernel Driver Hook Framework for Android

使任意可执行文件对接内核驱动 | 支持10+种驱动的通用Syscall 270钩子框架

✈️ Telegram: @ZYChats | 🌐 English


🔥 核心特性

1. Universal Hook 架构 (新)

突破性的全局Hook能力 —— 不再局限于 lib5.so,现在可以Hook系统中任意可执行二进制文件只要其调用了 syscall 270 (process_vm_readv)。

  • 🎯 第三方辅助内核化: 为未更新驱动的辅助科技作者提供内核级内存读取能力
  • 🔑 密钥预更新: 驱动作者已更新密钥但主程序未跟进?提前编译hook层无缝切换新驱动
  • 🛡️ 零侵入改造: 无需修改目标应用源码,动态替换系统调用实现内存读取

2. 十大驱动生态 (新)

全面支持 KPM内核模块KO临时驱动 两大类别,共10种行业主流驱动方案。


📦 支持的驱动类型

KPM 内核模块 (Kernel Persistent Module)

稳定高效,适合长期使用场景。

驱动名称 作者/来源 特点 状态
KPM-KMA-RW-DRIVER King777 最老牌的kpm内存读写模块,更新迭代了几十个版本,最稳定兼容高效隐蔽。缺点:时常关服务器后台断更。 行业标杆
ditProKpm 巴巴托斯作者 2026年初新作,衍生方案 新兴主流
KpmApReadioctl 早期Apatch-read元老级方案 经典稳定
KpmMemoryioctlhook 不知名人士 开源接口,便于对接开发 开放包容可对接
KpmTearioctlhook 阿夜 & 泪心 著名的fastcan基址扫描工具作者和著名的王者科技作者在2026年共同研发的kpm内存读写模块。 强强联手

KO 临时驱动 (Kernel Object)

临时加载,灵活性高,适合特定场景。

驱动名称 作者/来源 接口类型 特点
driverParadise Cycle1337 hook 基于开源Hook迭代优化,瓦/八宝粥科技作者
driverDitNetlink 巴巴托斯 Netlink 2024年前后开发,连理枝方案基础驱动
driverQX114 雪花科技 雪花 世面最早最广的KO驱动方案,江晚开源基础上修改迭代
driverGT1_567RTdev 忘川/RT Dev节点 GT 1.5/1.6/1.7 + RT 驱动,兼容性强
driverGT2_12RThook 忘川/RT Hook GT 2.1/2.2 + RT 驱动,隐秘性高

🏗️ 技术架构

传统方案 vs Universal Hook


传统方案 (lib5.cpp)          Universal Hook (lib5native_hook.cpp)
│                              │
▼                              ▼
┌──────────────┐               ┌──────────────────┐
│  仅Hook lib5.so │            │  Hook 任意ELF     │
│  process_vm_readv│           │  syscall 270     │
└──────────────┘               └──────────────────┘
│                              │
└──────────┬───────────────────┘
▼
┌────────────────┐
│  10种内核驱动切换层  │
│  (KPM/KO双模式)    │
└────────────────┘
│
▼
┌────────────────┐
│  硬件级内存读取    │
│  绕过用户态检测   │
└────────────────┘

代码实现演进

  • 旧版 (lib5.cpp): 针对 lib5.so.primary 的GOT表Hook,单文件硬编码
  • 新版 (lib5native_hook.cpp):
    • 使用 dlsym(RTLD_NEXT, "syscall") 实现全局符号拦截
    • 支持动态PID切换与线程安全初始化 (双重检查锁定)
    • 内存合并算法优化,减少驱动上下文切换
    • 纯AArch64汇编fallback,保证稳定性

🛠️ 快速开始

方案A:使用预编译版本

  1. 进入 Compiled_finished_product 文件夹
  2. 选择对应驱动的子文件夹
  3. 全部内容移动并替换到目标应用的私有目录

标准路径示例

/data/user/0/catch_.me_.if_.you_.can_/files/GG-7E6k/

⚠️ 注意: 每个 GG 修改器的包名不同,其私有目录的名称也肯定不同,不要直接复制粘贴而是根据自己的实际情况去找。

方案B:Universal Hook 注入 (新) 适用于为第三方应用注入内核驱动能力:

# 获取脚本所在的目录
SCRIPT_DIR="$(dirname "$0")"

export LD_LIBRARY_PATH="${SCRIPT_DIR}:${LD_LIBRARY_PATH}"
export LD_PRELOAD="${SCRIPT_DIR}/libKernelGg.so"

# 你的可执行二进制程序文件路径(比如当前同路径相对路径下的./main文件)
exec "./main" "$@"

🔨 自行编译

环境准备

  • Android NDK (推荐 r25+ 或 r28c)
  • Linux/macOS/Termux 构建环境
  • AArch64 架构支持 (__aarch64__)

编译步骤

  1. 源码配置
# 克隆项目后,根据你想要编译的对应目标驱动文件夹名称进入
git clone https://github.com/ZYPyDoki/Gg_Docking_Kernel
  1. 修改构建配置 编辑 build.sh,替换NDK路径:
# 原路径
/data/user/0/com.termux/files/home/android-ndk/ndk/29.0.14206865/ndk-build
# 改为你的路径,例如:
/home/user/android-ndk/ndk/25.2.9519653/ndk-build
  1. 执行编译
cd /path/to/source
chmod +x build.sh
./build.sh
  1. 获取产物
  • 输出文件:libs/arm64-v8a/libKernelGg.so
  • 提示"项目编译完成"后即可使用

💡 实现原理

致谢:enen 大牛的原始思路

在 GG 修改器加载其原生文件读写库 lib5.so 之前,抢先加载一个我们准备的共享库。加载完毕后,再让 GG 加载其原始的 lib5.so。通过这种方式,我们能够 Hook 系统调用号 270,从而将 lib5.so 中的文件读取操作,替换为通过内核驱动进行读取的方式。

内存读取流程劫持

  1. 注入时机: 在目标应用加载原生库前,抢先加载 libKernelGg.so
  2. 符号劫持: 通过 RTLD_NEXT 拦截 syscall 符号,重定向到自定义实现
  3. 调用转换: 当检测到 syscall 号 270 (__NR_process_vm_readv) 时:
    • 解析 iovec 结构体参数
    • 合并连续内存块 (优化策略)
    • 调用内核驱动接口替代标准系统调用
  4. 透明回退: 非目标调用直接透传至原始syscall,保证应用其他功能正常

为什么选择 Syscall 270? process_vm_readv 是Linux标准的跨进程内存读取接口,游戏修改器、辅助工具普遍使用此接口进行内存搜索。Hook此调用点可实现:

  • ✅ 无感知替换底层实现
  • ✅ 上层业务逻辑零修改
  • ✅ 天然支持所有调用该接口的程序

📚 NDK 安装指南

视频教程: Bilibili Tutorial

一键安装 (Linux aarch64):

cd && tar -xvf android-ndk-r28c-aarch64-linux-android.tar.xz && rm -rf android-ndk-r28c-aarch64-linux-android.tar.xz && mkdir -p android-ndk/ndk && mv android-ndk-r28c 28.2.13676358 && mv 28.2.13676358 android-ndk/ndk/ && ln -s $HOME/android-ndk/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-aarch64 $HOME/android-ndk/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64 && ln -s $HOME/android-ndk/ndk/28.2.13676358/prebuilt/linux-aarch64 $HOME/android-ndk/ndk/28.2.13676358/prebuilt/linux-x86_64 && echo '✅ NDK Installation Finished!'

⚠️ 重要注意事项

驱动部署权限 (关键)

  • 带有load.sh的内核ko驱动: 必须解压到根目录 (如 /data/local/),授予 777 权限,所有者用户组 root:0
  • 文件权限: Hook库替换后,务必设置权限 777,所有者用户组root0或目标应用

版本兼容性

版本 目标文件 文件大小 存放位置 96版 lib5.so.primary 3.9 MB 项目根目录 101版 lib5.so.primary 4.4 MB 101version/ 文件夹

Universal Hook 特别说明

  • 作用域: 由于使用 RTLD_NEXT,需确保本库比目标库先加载
  • 线程安全: 已实现 pthread_mutex 保护PID切换,多线程环境安全
  • 架构限制: 严格限定 __aarch64__,32位设备不支持

📜 更新日志

2026.01 重大更新3.0版本

  • ✨ 新增5种驱动支持: 扩展至10种主流驱动生态
  • 🚀 Universal Hook 架构: 支持Hook任意可执行文件,不再局限于lib5.so
  • ⚡ 性能优化: 新增内存块合并算法,减少驱动上下文切换损耗
  • 🛡️ aarch64汇编兜底: syscall失败时自动回退内联汇编实现

🤝 贡献与支持鸣谢内核驱动模块开发者名单

(开玩笑的说:如出事儿被批捕的名单) 随机排序

💖 赞助支持

如果这个项目对你有帮助,欢迎为爱发电💖请作者喝杯咖啡☕https://afdian.com/a/zypyd,支持项目的持续发展。感谢您的支持!您的赞助将激励我持续改进这个项目。

About

使gg修改器对接内核驱动,实现内核读取内存,过大部分的搜索检测。English:Make gg modifier connect to the kernel driver, realize the kernel to read the memory, and perform most of the search and detection

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors