Android Hook框架总结

目录

Java Hook

Epic

SandHook

AndFix

Legend框架

Whale Hook

Native Hook

BHook

Xhook

xposed



Java Hook

  • 1.静态修改apk中的函数调用,插入语句(droidbox)
  • 2.用反射获取java函数Method类型对应c层结构Method*,修改insns域的dex字节码(Andfix)
  • 3.修改method->nativeFunc域,自己实现dvmResolveNativeMethod以重新映射(xposed/substrate)

Epic

Epic 是 一个虚拟机层面,以 Java 方法为粒度的运行时 Hook 框架。简单来说,它就是 ART 上的 Dexposed,并且它目前 支持 Android 4.0~10.0

Epic github 地址:https://github.com/tiann/epic/blob/master/README_cn.md

继承XC_MethodHook 监听

class ThreadHook extends XC_MethodHook{
    @Override
    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
        super.beforeHookedMethod(param);
        Thread t = (Thread) param.thisObject;
        
    }
    
    @Override
    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
        super.afterHookedMethod(param);
        Thread t = (Thread) param.thisObject;
        
    }
}

注入监听

DexposedBridge.findAndHookMethod(Thread.class, "run", new ThreadHook());

SandHook

SandHook 是作用在 Android ART 虚拟机上的 Java 层 Hook 框架,作用于进程内是不需要 Root 的

https://github.com/ganyao114/SandHook

AndFix

通过nativie开发实现Method struct替换

Legend框架

通过java实现AndFix框架中的方法替换;暂不维护了

Android中免root的hook框架Legend原理解析_qq_44906504的博客-CSDN博客_android hook框架

Whale Hook

Whale是一个跨平台的Hook Framework,同时支持Android、IOS、Linux、MacOS。 Whale 支持ARM/THUMB、ARM64、X86、X86_64 (AMD64),这几乎覆盖了目前所有主流的设备。

[原创]Whale -- ART Hook的最方案与实践-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

https://github.com/asLody/whale

whale Hook 框架HelloWord - 简书

Native Hook

  1. GOT/PLT Hook 是一个比较中庸的方案,有较好的性能,中等的实现难度,但其只能 Hook 动态库之间的调用的函数,并且无法Hook 未导出的私有函数,而且只存在安装与卸载 2 种状态,一旦安装就会 Hook 所有函数调用。一句话:读取内存地址,通过读取/proc/self/maps节点获取so的中内存基址+got表中offset地址
  2. Trap Hook 最为稳定,但由于需要切换运行模式(R0/R3),且依赖内核的信号机制,导致性能很差。
  3.  Inline Hook 是一个非常激进的方案,有很好的性能,并且也没有 PLT 作用域的限制,可以说是一个非常灵活、完美的方案。但其实现难度极高,我至今也没有看到可以部署在生产环境的 Inline Hook 方案,因为涉及指令修复,需要编译器的各种优化。

但是需要注意,无论是哪一种 Hook 都只能 Hook 到应用自身的进程,我们无法替换系统或其他应用进程的函数执行。

      4.调用 RegisterNatives 就能注册函数,通过再次调用 RegisterNatives 重新注册函数覆盖之前的,从而达到 Hook 的效果

https://www.52pojie.cn/thread-1381225-1-1.html

Hook知识普及

Android Native Hook技术你知道多少? - 知乎

BHook

PLT hook 字节出版,在xhook基础上升级改造稳定和系统版本的兼容性

https://github.com/bytedance/bhook/blob/main/doc/overview.zh-CN.md

GitHub - bytedance/bhook: ? ByteHook(aka bhook) is a PLT hook framework for Android app.

Xhook

爱奇艺的xhook框架

采用 PLT/GOT Hook + “导出表” Hook 的方式来拦截相关的系统函数

xposed

inline hook方案

参考文献:

Android Hook框架总结 - 简书


版权声明:本文为u010019468原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。