下载此文档

Android Art Hook 技术方案.pdf


文档分类:IT计算机 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
: .
Android Art Hook 技术方案
0x1 开始
Anddroid 上的 ART 从 之后变成默认的选择,可见 ART 的重要性,目前关于 Dalvik Hook 方
面研究的文章很多,但我在网上却找不到关于 ART Hook 相关的文章,甚至连鼎鼎大名的 XPosed 和
Cydia Substrate 到目前为止也不支持 ART 的 Hook。当然我相信,技术方案他们肯定是的,估计卡在
机型适配上的了。
既然网上找不到相关的资料,于是我决定自己花些时间去研究一下,终于黃天不负有心人,我找
到了一个切实可行的方法,即本文所介绍的方法。
应该说明的是本文所介绍的方法肯定不是最好的,但大家看完本文之后,如果能启发大家找到更
好的 ART Hook 方法,那我抛砖引玉的目的就达到了。废话不多说,我们开始吧。
运行环境: ART 模式的模拟器
开发环境: Mac OS X
0x2 ART 类方法加载及执行
在 ART 中类方法的执行要比在 Dalvik 中要复杂得多,Dalvik 如果除去 JIT 部分,可以理解为是
一个解析执行的虚拟机,而 ART 则同时包含本地指令执行和解析执行两种模式,同时所生成的 oat 文
件也包含两种类型,分别是 portable 和 quick。portable 和 quick 的主要区别是对于方法的加载机
制不相同,quick 大量使用了 Lazy Load 机制,因此应用的启动速度更快,但加载流程更复杂。其中
quick 是作为默认选项,因此本文所涉及的技术分析都是基于 quick 类型的。
由于 ART 存在本地指令执行和解析执行两种模式,因此类方法之间并不是能直接跳转的,而是通
过一些预先定义的 bridge 函数进行状态和上下文的切换,这里引用一下老罗博客中的示意图: : .
当执行某个方法时,如果当前是本地指令执行模式,则会执 行
ArtMethod::GetEntryPointFromCompiledCode() 指向的函数,否则则执 行
ArtMethod::GetEntryPointFromInterpreter()指向的函数。因此每个方法,都有两个入口点,分别
保存在 ArtMethod::entry_point_from_compiled_code_ 和
ArtMethod::entry_point_from_interpreter_。了解这一点非常重要,后面我们主要就是在这两个入
口做文章。
在讲述原理之前,需要先把以下两个流程了解清楚,这里的内容要展开是非常庞大的,我针对

Android Art Hook 技术方案 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人学习好资料
  • 文件大小171 KB
  • 时间2021-12-29
最近更新