类Xposed
类Xposed主要包含xposed、edxposed、lsposed,这三个都依赖于xposed的原始hook框架,所以介绍这三个相当于是
Xposed
注入
Hook
EDXposed
注入
Hook
LsPosed
注入
Hook
Frida
注入
Frida注入方式有很多,frida-server自带的attach、spawn,还有各种千奇百怪的利用frida-gadget做核心,其他的注入方式来注入的,我这里就不一一展开说明了,我也没怎么用过哪些注入方式。
attach
spawn
Hook-Inline Hook
Frida-gum
这里主要是参考evilpan大佬的文章Frida Internal - Part 1: 架构、Gum 与 V8。
按照其中给出的frida-gum例子结合源码来做分析
使用https://github.com/frida/frida/releases中的https://github.com/frida/frida/releases/download/15.2.2/frida-gum-devkit-15.2.2-android-arm64.tar.xz ,解压缩后,会有一个.c、一个.h以及一个.a文件,主要是按照其中的frida-gum-example.c的demo来做分析。
1 | GumInterceptor * interceptor; |
人眼看代码看,但是感觉并不是很清晰,并不知道具体干了什么,还需要结合调试来看完整的过程。
调试Frida-gum
前面所说,肉眼看代码分析其流程可能会出现很大的问题,程序代码多个if-else结构,走入的流程不尽相同,所以需要实际调试来分析。
怎么调试呢?这是个问题,其次官方release中的frida-gum-devkit是怎么编译的。
了解大致的编译流程后,如何基于源码进行调试,可否改造成cmake项目。
GOT/PLT Hook
Bhook
https://github.com/bytedance/bhook
ByteHook 是一个 Android PLT hook 库,它支持 armeabi-v7a, arm64-v8a, x86 和 x86_64。
字节跳动的大多数 Android app(包括抖音,今日头条,西瓜视频)在线上环境中使用了 ByteHook 作为 PLT hook 方案。
其中主要是监控dl、linker等,用来解析ELF的执行视图,并将.rel.plt,.rel.dyn等重定向内容改成hook的内容。
Inline Hook
介绍Frida-gum,这在Frida一节会讲