Apk文件介绍(一)

这一部分我会详细介绍apk文件相关的知识,包括获取、安装、结构、反编译等等。文章中所列的资源均可在https://github.com/AndroidAppSec/resources下载。

一、获取 apk 文件

安卓系统是 google 公司开发的基于 linux 的开源手机操作系统,安卓 APP 就是运行在其上的应用,通常是以 apk 作为文件后缀。

我们要测试一款 APP ,首先要解决从哪里来的问题,即从哪里能够获取到 apk 文件。

通常有以下几个渠道:

1、从应用的官方网站下载。

2、从应用市场上下载。

3、从手机中导出。

前两个渠道读者应该能够自行搞定。下面主要说以下如何从手机中导出 apk 文件。

我们以手机中安装的 Sieve 应用为例。(Sieve应用是drozer官方开发的一款带有漏洞的应用,以后我们会以此应用为例来展示如何进行安全测试)

首先打开应用

运行命令,adb shell dumpsys activity top,我们就可以得到当前应用的包名,如下图的红框中所示:

对于没有界面的应用来说,我们可以通过命令adb shell pmlist packages,来列出手机所有安装的应用包名。

得到应用包名之后,可以通过命令adb shell pm path com.mwr.example.sieve得到当前APP对应的apk文件在手机中的文件路径。

使用命令adb pull/data/app/com.mwr.example.sieve-1.apk d:/将手机中的apk导出到电脑中。

二、apk文件简介

apk 文件其实是一个 zip 文件,只是后缀改变了而已。我们可以使用解压缩工具查看里面的具体细节。以 Sieve.apk 为例,列出其内部目录结构如下:

AndroidManifest.xml 文件:类似于 Java EE 应用的 web.xml 的角色,定义了整个应用的运行信息。包括:包名、权限、API 版本、组件等等信息(后续会详细介绍)。

classes.dex 文件:包含了应用的整个代码逻辑,其以 Dalvik 字节码的形式存在。

lib 目录:包含了应用需要的原生库文件,其主要是从 c/c++ 代码编译而来。

META-INF 目录:主要存储了应用的证书和签名信息文件。

res 目录:包含不能打包进 resources.arsc 的一些资源文件,如图片、布局信息等等。

resources.arsc 文件:应用资源文件。

三、安装应用

如果我们获得了apk文件,可以使用adbinstall sieve.apk来安装应用:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180623G1F69W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券