Hunter 中文文档 下载 App

Hunter inline hook & GOT 表检测 - 关键函数跳转被改道了吗

这项在查什么

inline hook 和 GOT 表是 Android 进程 hook 的两种主流技术。Hunter 的这项检测同时覆盖两者,用来判断系统内部有没有被注入 hook 代码。

Inline Hook

Inline hook 的原理是:在目标函数的机器码开头插入一条跳转指令(通常是 5 字节的无条件跳转),让函数调用先跳到 hook 者的代码里,hook 逻辑跑完再跳回原函数。Hunter 通过对比关键函数开头的机器码与原版二进制来发现差异。

GOT 表 Hook

GOT(Global Offset Table,全局偏移表)是 ELF 二进制文件里的一个数据结构,存储了外部函数的实际地址。GOT hook 的原理是:修改 GOT 表里的函数指针,让它指向 hook 者的代码。函数调用时直接跳到 hook 代码,不需要改机器码。

为什么这两项重要

Inline hook 和 GOT hook 是几乎所有框架注入和逆向工具的底层技术——Magisk、Zygisk、LSPosed、Frida 都在某个层面依赖其中一种。所以这两项的检测结果能从最底层告诉你:

和其他检测项的关系

检测项关联关系
libc 内存检测libc 是 hook 最常用的目标,libc 内存报红 → inline hook / GOT 大概率也报
Frida & IDAFrida 通过这两种技术实现 hook
反调试 / Unidbg反调试也常用 inline hook 实现

谁会被触发

场景触发概率说明
Magisk + Zygisk可能触发Zygote 注入会改机器码
LSPosed大概率触发Zygote + inline hook 实现模块加载
Frida必然触发用 inline hook 和 GOT hook 注入 agent
完全没装过框架 / 逆向工具正常不触发报红需要排查

报红时怎么定位来源

Hunter 的 inline hook / GOT 表检测会在详情里给出被 hook 的具体函数名——比如如果报 malloc 被 hook 了,你就能锁定是哪个注入工具在做这件事。对照已安装应用列表里的 Magisk 模块、逆向工具等,基本能定位来源。

下一篇