在前一篇文章中,我们通过分析OAT文件的加载过程,认识了OAT文件的格式,其中包含了原始的DEX文件。既然ART运行时执行的都是翻译DEX字节码后得到的本地机器指令了,为什么还需要在OAT文件中包含DEX文件,并且将它加载到内存去呢?这是因为ART运行时提供了Java虚拟机接口,而要实现Java虚拟机接口不得不依赖于DEX文件。本文就通过分析ART运行时加载类及其方法的过程来理解DEX文件的作用。...
分类:
移动开发 时间:
2014-10-20 02:09:12
阅读次数:
351
Dex是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。java源代码经过ADT的复杂编译后转换成Dex文件,这是一个逐步优化的过程。Dex文件的指令码就是Dalvik虚拟机专有的一套指令集,专门为嵌入式系统优化过,相比标准java的.class文件,它体积小,运行效率高。纯手打!反..
分类:
其他好文 时间:
2014-10-01 20:52:42
阅读次数:
256
在前面一文中,我们介绍了Android运行时ART,它的核心是OAT文件。OAT文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容。这使得我们无需重新编译原有的APK就可以让它正常地在ART里面运行,也就是我们不需要改变原来的APK编程接口。本文我们通过OAT文件的加载过程分析OAT文件的结构,为后面分析ART的工作原理打基础。...
分类:
移动开发 时间:
2014-09-29 01:55:38
阅读次数:
418
Android 应用的构建过程就是将 Android 项目中的文件和资源进行编译和打包,最后将结果输出到 .apk 文件。.apk 文件是保存二进制文件的容器,它包含了运行安卓应用所需的所有信息,例如编译后的 .dex 文件(.class 对应的 Dalvik 字节码),一个二进制的 Andro.....
分类:
移动开发 时间:
2014-09-24 12:08:46
阅读次数:
280
最近在做解压缩相关项目,需要处理不同格式的文档,各个文件格式,解析器如何知道一个文件是什么格式,主要是文件二进制头(file signatures-文件签名)来决定的。
例如如何确定一个文件是apk(同zip等压缩文件)文件,需要解析其前四个字节“50
4B 03 04”来确定。
反编译apk文件中的dex文件,其前8个字节是固定的(“64
65 78 0A 3...
分类:
其他好文 时间:
2014-09-16 19:01:01
阅读次数:
564
dex2jar和jd-gui工具下载,链接:http://yun.baidu.com/share/link?shareid=2888715259&uk=1377615098解压APK文件得到 classes.dex文件将classes.dex文件拷贝到dex2jar-0.0.9.13目录,在命令行下...
分类:
移动开发 时间:
2014-08-18 17:55:52
阅读次数:
235
类型Dalvik的字节码中拥有两个主要的类型:基类和引用类型。引用类型引用类型是对象和数组,其他的一切都是基类基类被一个简单的字符描述。我没有提出这些缩写词———他们实际以字符串的形式存储于dex文件中他们被定义与dex格式网页文档中(在AOSP库中的路径是dalvik/docs/dex-forma...
分类:
其他好文 时间:
2014-08-15 12:47:28
阅读次数:
251
这一节,主要介绍一下baksmali代码的框架。我们经常在反编译androidapk包的时候使用apktool这个工具,其实本身这个工具里面对于dex文件解析和重新生成就是使用的baksmali和smali这两个jar包其中baksmali是将dex文件转换成便于阅读的smali文件的,具体使用命令如下:java-jarbak..
分类:
其他好文 时间:
2014-08-14 20:54:49
阅读次数:
215
简单的总结几个关键步骤:一、工具准备:apktool , dex2jar , jd-gui二、使用dex2jar + jd-gui 得到apk的java源码1.用解压工具从 apk包中取出 classes.dex 文件用命令(dex2jar.bat classes.dex )得到一个 jar文件2....
分类:
移动开发 时间:
2014-08-03 17:46:05
阅读次数:
341