安卓逆向系列教程(二)APK 和 DEX
作者:飞龙
APK
APK 是 Android 软件包的分发格式,它本身是个 Zip 压缩包。APK 根目录下可能出现的目录和文件有:
名称 | 用途 |
---|---|
META-INF |
存放元数据 |
AndroidManifest.xml |
编译后的全局配置文件 |
assets |
存放资源文件,不会编译 |
classes.dex |
编译并打包后的源代码 |
lib |
存放二进制共享库,含有armeabi-* 、mips 、x86 等文件夹,对应具体的平台 |
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 |
存放颜色,使用
|