前言
在移动安全的学习过程中,最离不开的过程就是和apk文件打交道,apk加固、apk漏洞挖掘、apk反编译等过程都和apk文件息息相关
以下先对apk整体结构进行认知描述
一、APK的获取
任意选择一款APK,有过Android开发经验的同学可以直接从AS自己打包一份APK,或者从其他渠道任意获得一份APK文件发送到自己的电脑上
我这里直接获取了自己之前的项目打包出来的APK
二、APK查看
1.修改文件后缀名,点击进行查看
修改文件的后缀名,可以修改为一种压缩文件打包的文件后缀名,而后使用压缩文件解压的软件进行查看,这里采用将APK文件名修改为RAR
点击打开压缩文件进行查看
接下来对APK的包体结构进行分析
2.APK包体结构分析
- META-INF APK的签名文件,是APK的正盗版的唯一表示,如果要对APK进行反编译或是替换APK的签名文件,则必然会对此文件夹下的内容进行操作
- AndroidManifest.xml Android的配置文件,其中会包含四大组件和一些权限的基本信息,学过Android开发的同学这方面应该不难理解
- dex文件,APK的相关执行代码、算法和逻辑都包含在其中,这里主要讨论以Java语言编写的Android项目,在Java语言编写的Android的项目中,各个类的代码和各个类之间的联系都会被打包扔进dex文件当中,在反编译时,可以使用dex2jar工具将拿到手的代码反编译成java源文件
- resource.arsc,字符文件,对APK整体的字符显示进行修改,例如将一个英语的APK文件,修改为汉化的APK文件
- • res目录,资源文件,如图片等文件;通过情况下,当我们想要模仿一个竞业APP的状态时,我们可以使用ApkTool获取其资源文件
总结
以上是一款APK的主体信息介绍,其实实际的APK包含的内容远远超过上述介绍的五大部分,但上述的五大部分是一款APK不可缺少的主题信息,一款APK缺少任一一部分主题信息都无法得以正确运行;因而弄清楚五大主题部分信息的主要作用至关重要。