安卓逆向系列教程(二)APK 和 DEX

安卓逆向系列教程(二)APK 和 DEX

作者:飞龙

APK

APK 是 Android 软件包的分发格式,它本身是个 Zip 压缩包。APK 根目录下可能出现的目录和文件有:

名称 用途
META-INF 存放元数据
AndroidManifest.xml 编译后的全局配置文件
assets 存放资源文件,不会编译
classes.dex 编译并打包后的源代码
lib 存放二进制共享库,含有armeabi-*mipsx86等文件夹,对应具体的平台
res 存放资源文件
resources.arsc 编译并打包后的res/values中的文件

res

res 中可能出现的目录如下:

名称 用途
anim 存放编译后的动画 XML 文件(
color 存放编译后的选择器 XML 文件(
drawable-* 存放图片,*为不同分辨率,图片按照不同分辨率归类。其中带.9的图片为可拉伸的图片。
layout 存放编译后的布局 XML 文件(
menu 存放编译后的菜单 XML 文件(
mipmap-* 存放使用 mipmap 技术加速的图片,一般用来存放应用图标,其它同drawable-*
raw 存放资源文件,不会编译,比如音乐、视频、纯文本等
xml 存放编译后的自定义 XML 文件

resources.arsc

在 APK 中是找不到res/values这个目录的,因为它里面的文件编译后打包成了resources.arsc。为了理解它,我们先看一看原始的res/values

res/values中保存资源 XML 文件,根节点为。一般可能会出现以下几种文件:

名称 用途
arrays.xml 存放整数数组和字符串数组,使用定义,元素使用定义
bools.xml 存放布尔值,使用定义
colors.xml 存放颜色,使用定义
dimens.xml 存放尺寸,使用定义
drawables.xml 存放颜色,使用定义
ids.xml 存放 ID,使用定义
integers.xml 存放整数,使用定义
strings.xml 存放字符串,使用定义
styles.xml 存放颜色,使用