Android快速分析apk工具aapt的使用教程_Android

前面walfred已经介绍了使用apktool对apk进行逆向编译,通过apktool我们的确可以反编译已经序列化后的AndroidManifest.xml和资源文件等等,但是有没有一种快速有效的工具在不解包的前提下可以获得某一apk的基本内容、权限以及该apk的基本信息呢?答案就是有,这个工具就是今天要介绍的aapt。

aapt简介

aapt即Android Asset Packaging Tool,我们可以在SDK的platform-tools目录下找到该工具。aapt可以查看、 创建、 更新ZIP格式的文档附件(zip, jar, apk)。 也可将资源文件编译成二进制文件,尽管你可能没有直接使用过aapt工具,但是build scripts和IDE插件会使用这个工具打包apk文件构成一个Android 应用程序。

主要用法

下面的这个参数列表基本向我们展示了如何使用aapt以及aapt的基本功能了。

复制代码 代码如下:

aapt l[ist]:列出资源压缩包里的内容。
aapt d[ump]:查看APK包内指定的内容。
aapt p[ackage]:打包生成资源压缩包。
aapt r[emove]:从压缩包中删除指定文件。
aapt a[dd]:向压缩包中添加指定文件。
aapt v[ersion]:打印aapt的版本。

使用aapt
这里我就用一个应用来做测试sample,应用为:应用汇应用市场。
列举出apk中的所有文件

复制代码 代码如下:

walfred@ubuntu:~/lab$ aapt l yingyonghui.apk


当然这个apk的内容太多,一张纸显示不了所有的内容,你可以将其重定向到一个专门的文件中去,这样查看也方便。

复制代码 代码如下:

walfred@ubuntu:~/lab$ aapt l yingyonghui.apk > yingyonghui.txt

查看apk的基本信息
aapt最实用的功能,通过d(ump)参数可以查看该apk的基本信息以及权限等,但该参数还有一个value,可以选用的value值如下:
d参数的语法如下:

复制代码 代码如下:

aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
values:
badging Print the label and icon for the app declared in APK.
permissions Print the permissions from the APK.
resources Print the resource table from the APK.
configurations Print the configurations in the APK.
xmltree Print the compiled xmls in the given assets.
xmlstrings Print the strings of the given compiled xml assets.

查看基本信息

复制代码 代码如下:

walfred@ubuntu:~/lab$ aapt d badging yingyonghui.apk

查看应用权限

复制代码 代码如下:

walfred@ubuntu:~/lab$ aapt d permissions yingyonghui.apk

结语

怎么样,aapt这个小工具本领还真不小吧,当我们在判断一个apk是否有恶意行为时,我们第一步可以考虑使用aapt这个tool哦,我们可以分析这个apk的权限列表,一旦有部分权限过大,比如发送短信、读取联系人信息等权限时,就可以进一步分析这个apk了。

时间: 2024-10-22 10:53:11

Android快速分析apk工具aapt的使用教程_Android的相关文章

Android快速分析apk工具aapt的使用教程

前面walfred已经介绍了使用apktool对apk进行逆向编译,通过apktool我们的确可以反编译已经序列化后的AndroidManifest.xml和资源文件等等,但是有没有一种快速有效的工具在不解包的前提下可以获得某一apk的基本内容.权限以及该apk的基本信息呢?答案就是有,这个工具就是今天要介绍的aapt. aapt简介 aapt即Android Asset Packaging Tool,我们可以在SDK的platform-tools目录下找到该工具.aapt可以查看. 创建. 更

Android入门之源码开发基础教程_Android

本文讲述了Android入门之源码开发基础教程.分享给大家供大家参考,具体如下: 下载 Android 源码之后,接下来就是学习或者进行开发. 在开发之前,谈一些开发必备知识或者工具,工欲善其事必先利其器嘛! 在前面一篇<Android入门之使用eclipse进行源码开发的方法>中基本上说了开发使用工具. 但是我们如何使用模拟器开发呢?! 当然你去删除或者增加app到模拟器就不可以按常规来操作了,花 5 -10 分钟了解一下,如果你有需要. 0. 编译源码 直接在下载的源码根目录下面,执行:

Android App中使用ListFragment的实例教程_Android

ListFragment继承于Fragment.因此它具有Fragment的特性,能够作为activity中的一部分,目的也是为了使页面设计更加灵活. 相比Fragment,ListFragment的内容是以列表(list)的形式显示的.ListFragment的布局默认包含一个ListView.因此,在ListFragment对应的布局文件中,必须指定一个 android:id 为 "@android:id/list" 的ListView控件! ListFragment基础使用下面介

Android桌面组件App Widget用法入门教程_Android

本文实例讲述了Android桌面组件App Widget用法.分享给大家供大家参考.具体如下: Android开发应用除了程序应用,还有App Widget应用.好多人会开发程序应用而不会开发App Widget应用.本帖子就是帮助大家学习如何开发App Widget应用的. 先简单说说App Widget的原理.App Widget是在桌面上的一块显示信息的东西,通过单击App Widget跳转到程序入口类.而系统自带的程序,典型的App Widget是music,这个Android内置的音乐

Android开发笔记之Intent初级学习教程_Android

本文讲述了Android开发笔记之Intent初级学习教程.分享给大家供大家参考,具体如下: 项目创建步骤: New Android Project-> Project name:Intent Build Target:Android 2.2 Application name:IntentDemo Package name:com.b510.intent.activity Create Activity:MainActivity Min SDK Version:8 Finish 1.拨打电话 按

Android自动测试工具Monkey的实现方法_Android

1. Android Monkey 实现操作流程: 准备:在eclipse里安装Phyon插件,可以选择在线安装,也可以下载zip解压后放在eclipse安装目录的dropins下,如 : /personal/software/android_developtools/adt-bundle-mac-x86_64-20130522/eclipse/dropins/PyDev 2.8.2 插件准备就绪就重启eclipse,检验PyDev是否正常工作,然后开始MonkeyRunner测试: 第一步:

Android最新版本开发环境搭建图文教程_Android

本文只是写了如何配置JDK,以及adt-bundle的配置.对于以前的adt-bundle的版本,会自带CPU/ABI系统镜像,经过本文所描述的两个步骤后可以直接创建AVD,但是从官网下载的最新的adt-bundle并没有带镜像,下篇文章讲述如何下载多个Android版本平台以及下载镜像. 一.JDK的下载,安装与环境变量配置 1)JDK的下载 a, 输入网址https://www.oracle.com/进入oracle官网,如下,点击Downloads栏下的Java SE,进入Java SE的

Android开发环境安装和配置图文教程_Android

一.安装JDK.SDK.NDK 无论是用C#和VS2015开发Androd App还是用Java和Eclipse开发Androd App,都需要先安装JDK和Android SDK.把这些安装完毕后,再在开发工具中配置一下安装的路径就行了. 1.安装jdk 下面两个都要安装: jdk-6u45-windows-i586.exe jdk-7u79-windows-i586.exe 到网上找到对应的文件后下载运行即可,Oracle的官网上有,免费下载. 2.安装Android SDK 下载下面的An

Android获取apk程序签名信息代码示例_Android

复制代码 代码如下: 这是获取apk包的签名信息private String getSign(Context context) {  PackageManager pm = context.getPackageManager();  List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES);  Iterator<PackageInfo> iter = apps.iterator()