-
-
[原创]TurboDex开源项目中Inline Hook简单原理图
-
发表于:
2016-5-16 17:11
11561
-
[原创]TurboDex开源项目中Inline Hook简单原理图
本菜鸟是新手研究hook,以下是自己研究lody大神的TurboDex中的Inline hook过程中自己的一些理解,和大家分享一下,有不正确的欢迎大神们指正。
Arm架构下有arm指令和thumb指令之分,不同指令集的hook过程不一样。
假设我们要hook libc.so中的execv和read函数,Android系统的库应该都加了-mthumb-interworking编译选项,支持thumb/arm的代码交织,所以要区分目标函数是thumb还是arm指令的。
用ndk编译自己的代码好像默认的是arm(虽然我网上查的说默认是thumb,但我的库编译出来的是arm,回来我再看下ndk文档),下面的图假设我自己的函数库是arm指令的。
另外,下面的图没有考虑相对偏移的情况,只是针对最简单的情况,如果有相对偏移的话需要特殊处理,这个有点麻烦这里我就不介绍了。
图1 目标函数是Arm指令下的Inline hook原理图
图2 目标函数是thumb指令下的Inline hook原理图
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课