第一章 Android 应用关键文件结构介绍
6
第一章 Android 应用关键文件结构介绍
不管是进行加壳,还是对壳检测分析,都需要对文件结构进行分析,只有
了解 APK 包的文件结构,以及包里面文件的作用,才能更好的了解各种加壳的
方法,从而更好的分析 APK 是否加壳。本章将主要介绍 APK,以及 APK 包里
面文件的结构,以及文件作用。
1.1 APK 文件介绍
APK 是 Android application package 的缩写,即 Android 安装包(apk)。A
PK 是类似 SymbianSis 或 Sisx 的文件格式。通过将 APK 文件直接传到 Androi
d 模拟器或 Android 手机中执行即可安装。
APK 文件和 sis 一样,把 androidsdk 编译的工程打包成一个安装程序文
件,格式为 APK。 APK 文件其实是 zip 格式,但后缀名被修改为 apk,通过
UnZip 解压后,可以看到 Dex 文件,Dex 是 DalvikVM executes 的简称,即
Android Dalvik 执行程序,并非 Java ME 的字节码而是 Dalvik 字节码。Andr
oid 在运行一个程序时首先需要 UnZip,然后类似 Symbian 那样直接,但不同
于 Windows mobile 中的 PE 文件,程序的保密性和可靠性不是很高,通过 de
xdump 命令可以反编译它,但这种架构符合发展规律,微软的 WindowsGadg
ets(WPF)也采用了这种架构方式。在 Android 平台中,dalvikvm 的执行文件
被打包为 apk 格式,最终运行时加载器会先解压,然后获取编译后的 android
manifest.xml 文件中的 permission 声明对安全访问的限制,要知道仍然存在很
多安全限制,但将 apk 文件传到/system/app 文件夹下会发现执行是不受限制
的。也许我们平时安装都不会选用这个文件夹,但在 androidrom 中,系统的
APK 文件默认会放入这个文件夹,它们拥有 root 权限。
一个 APK 文件内包含被编译的代码文件(.dex 文件),文件资源(resourc
es),原生资源文件(assets),证书(certificates),和清单文件(manifest fil
e)。 APK 文件基于 ZIP 文件格式,它与 JAR 文件的构造方式相似。
表 2.1 APK 包文件介绍