SandHook — 安卓 ART 内联 Hook 框架
工具简介
SandHook(GitHub)是由 asLody(Lody)开发的 Android ART Hook 框架,使用 Java 语言编写,当前拥有 2214 颗星。它是 Android 平台上最为知名的 ART 内联 Hook 方案之一,由 VirtualApp 团队出品。
核心能力
- ART Hook:支持 Android 4.4(ART 运行时) ~ 11.0 全版本
- Native Inline Hook:支持 ARM64、ARM32(理论)、Thumb-2 指令集
- Single Instruction Hook:单指令级 Hook 能力
- Xposed API 兼容:提供 Xposed API 兼容层,无缝迁移现有模块
架构组成
| 模块 | 说明 |
|---|---|
annotation | 注解 API 定义 |
hooklib | ART Hook 核心库 |
nativehook | Native Hook 库 |
xposedcompat | Xposed API 兼容实现(稳定版) |
xposedcompat_new | Xposed API 兼容实现(快速版) |
hookers | Hook 插件 Demo |
使用方式
通过 Gradle 依赖方式集成:
implementation 'com.swift.sandhook:hooklib:4.2.0'
implementation 'com.swift.sandhook:nativehook:4.2.0'
注解 API 示例
@HookClass(Activity.class)
public class ActivityHooker {
@HookMethodBackup("onCreate")
@MethodParams(Bundle.class)
static Method onCreateBackup;
@HookMethod("onCreate")
@MethodParams(Bundle.class)
public static void onCreate(Activity thiz, Bundle bundle) throws Throwable {
Log.e("ActivityHooker", "hooked onCreate success " + thiz);
SandHook.callOriginByBackup(onCreateBackup, thiz, bundle);
}
}
技术特点
| 指标 | 数据 |
|---|---|
| 仓库 | https://github.com/asLody/SandHook |
| Stars | 2214 |
| Forks | 450 |
| 编程语言 | Java |
| Topics | android, aop, art, hook, inline-hook, java-hook, xposed |
| 创建时间 | 2019-01-12 |
| 最后更新 | 2023-01-19 |
在逆向工程中的应用
SandHook 广泛应用于:
- 应用脱壳:通过 Hook ART 方法调用还原加壳应用的方法
- 行为监控:监控应用关键方法的调用参数和返回值
- 隐私分析:Hook 敏感 API 调用链,分析隐私数据流向
- 功能增强:通过 Hook 扩展应用功能,如去广告、会员破解
- 兼容层开发:作为 Xposed 模块在非 Root 环境下的运行时基础
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/sec/sandhook.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)