
ART
文章平均质量分 93
zhu929033262
这个作者很懒,什么都没留下…
展开
-
ART加载OAT文件的分析
本文对老罗博客进行学习理解,针对android6.0系统源码,连个人理解带复制粘贴,总结的ART虚拟机对OAT文件的加载解析流程。ART运行时提供了一个OatFile类,通过调用它的静态成员函数Open可以在本进程中加载OAT文件,它的实现如下所示(art/runtime/oat_file.cc):OatFile* OatFile::Open(const std::st原创 2017-07-11 12:04:00 · 2002 阅读 · 0 评论 -
ARTist中dex2oat和原生dex2oat的区别
为了更好了解ARTist的工作原理,这里分析下ARTist中dex2oat的特殊之处。原创 2017-11-20 11:04:44 · 1068 阅读 · 0 评论 -
dex2oat源码流程分析
dex2oat是ART运行模式下虚拟机必备的一个组件,主要用来把安装的apk和动态加载的dex等文件转换成oat文件,方便下一步的加载解析,获得其中的类并执行相关方法,所以本文以Android 6.0源码为例,对dex的处理流程尝试做一下分析,了解其中的处理情况。dex2oat源码位于art\dex2oat\Dex2oat.cc,入口函数为main:int main(int argc,原创 2017-10-23 12:45:10 · 5960 阅读 · 1 评论 -
【个人笔记二】ART系统OAT文件的加载解析
在ART上用YAHFA、Legend以及一个java层实现的Andix:http://weishu.me/2017/03/20/dive-into-art-hello-world/,发现除了framework层的类(如telephonymanager)和应用中的类有效外,对于java核心库的类(如IOBridge和Class等)的hook都无效,所以我就以telephonymanager和IOBridge这两个类为例原创 2017-08-14 15:40:42 · 2718 阅读 · 1 评论 -
【个人笔记四】ART系统执行类方法流程分析
在ART上用YAHFA、Legend以及一个java层实现的Andix: http://weishu.me/2017/03/20/dive-into-art-hello-world/,发现除了framework层的类(如telephonymanager)和应用中的类有效外,对于java核心库的类(如IOBridge和Class等)的hook都无效,所以我就以telephonymanager和IOBridge这两原创 2017-08-26 14:58:25 · 1520 阅读 · 0 评论 -
【个人笔记三】ART系统类和方法加载分析
- 在ART上用YAHFA、Legend以及一个java层实现的Andix: http://weishu.me/2017/03/20/dive-into-art-hello-world/,发现除了framework层的类(如telephonymanager)和应用中的类有效外,对于java核心库的类(如IOBridge和Class等)的hook都无效,所以我就以telephonymanager和IOBridge这两原创 2017-08-22 15:16:19 · 3082 阅读 · 0 评论 -
GDB调试Android代码——环境搭建及调试过程
网上看了好多关于GDB调试android本地代码的,但是都是直接上手,对于一点都不懂的我,真是难办,所以本人根据个人经历,总结下怎么从小白一步一步进行调试。调试环境:调试平台:ubuntu14.04LTS目标手机:Android6.0虚拟机 X86架构软件环境:android-ndk-r10b搭配adt-bundle然后准备gdb和gdbserver,远程调试需要在原创 2017-07-27 08:51:55 · 16878 阅读 · 1 评论 -
ART虚拟机特点与组件
原文地址:ART虚拟机启动之image空间接下来以Android-5.1.1-R14版本的源码介绍ART虚拟机的相关知识,本来不想对Dalvik多说的,可是发现Dalvik虽然已经退休了,但其影响力依然不小,ART中很多地方都引用了其中的内容,而且最近的项目也需要对Dalvik定制,所以可能会穿插Dalvik的内容。ART简介Android 4.4开始引转载 2017-08-09 16:53:59 · 670 阅读 · 0 评论 -
ART执行类方法解析流程
在类的加载过程中,需要对类的各个方法进行链接,实际上就是确定它们是通过解释器来执行,还是以本地机器指令来直接执行(art/runtime/class_linker.cc),如下所示:void ClassLinker::LinkCode(ArtMethod* method, const OatFile::OatClass* oat_class,原创 2017-07-13 21:37:39 · 4838 阅读 · 0 评论 -
ARTistGUI主要流程分析
通过应用层分析,ARTistGUI的主要处理函数在/ArtistGui/app/src/main/java/saarland/cispa/artist/artistgui/instrumentation/InstrumentationTask.java中,代码如下: @Override public void run() { Log.i(TAG, "Run() comp原创 2017-11-13 14:49:59 · 1271 阅读 · 0 评论