APK文件介绍
一、APK文件简介
APK英文全称“Android application package”,即Android安装包(apk),是一种能被Android系统识别并运行的应用程序安装文件,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。
二、APK文件结构
APK本质就是一个zip压缩包文件,直接使用解压工具解压就能看到完整的文件系统结构。一个APK文件中通常包含有以下文件:
·被编译的代码文件(.dex 文件)
·文件资源(resources)
·原生资源文件(assets)
·证书(certificates)
·清单文件(manifest file)
三、获取apk文件
获取apk的方式很多,比如从应用的官方网站下载、从应用市场下载或者从手机中直接导出等等,下面主要着重说一下如何从手机中导出APK文件。
运行命令“adb shell dumpsys activity top”获取当前应用包名,如下图红色框中所示,该包名即为当前应用包名。
得到应用包名之后,可以通过命令“adb shell pm path com.tencent.mm”得到当前APP对应的apk文件所在模拟器中的文件路径。
使用命令 :
“adb pull /data/app/com.tencent.mm-1/base.apk D:/ test”将模拟器中的apk导出到电脑中。
四、APK反编译
apk反编译就是通过使用apk编译工具,将apk文件中的源文件和资源反编译出来,得到的源文件和资源文件可以进行处理后再进行编译,以达到个性化定制、汉化apk等目的。
Android中常用的反编译工具有apktool、dex2jar和jd-gui。
apktool主要用于逆向apk文件的工具, 它可以将资源解码为几乎原始的形式。
jd-gui是一个独立的图形实用程序,可显示“.class”文件的 Java 源代码。
dex2jar可以将dex文件转换成Java文件,以界面的形式展示反编译出来的java源代码。
下面以dex2jar为例,讲一下使用dex2jar工具反编译apk文件的操作过程:
1、下载完工具压缩包后对它进行解压
2、把需要反编译的APK文件的后缀名改
成zip,然后解压它(解压的时候选择好一
个文件夹放解压后的文件,防止文件絮乱)。
3、在解压后的文件夹中找到所有“
.dex”格式文件,将它复制到“dex2jar”工具
目录下。
4、打开命令进入“d2j-dex2jar.bat ”文
件所在目录,输入命令“
d2j-dex2jar.bat classes.dex ”。
5、接下来您会看到文件“d2j-dex2jar.bat ”
所在目录下生成了一个“classes-dex2jar.jar”
文件,这个文件就是我们反编译“classes
.dex”文件所生成的java文件。
6、使用jd-gui打开“classes-dex2jar.jar”文
件就可以查看到源代码。
结束语
以上简单介绍了apk文件结构和获取模拟器中apk文件的操作,并介绍了反编译工具dex2jar的用法,希望对大家有所帮助!