Apktool(3)——Apktool的使用

一.apktool的作用

安卓应用apk文件不仅仅是包含有resource和编译的java代码的zip文件,如果你尝试用解压工具(如好压)解压后,你将会获得classes.dex和resource.arsc等文件。但这些文件对我们来说一无用处。你可以尝试打开AndroidManifest.xml:

如果我们有了apktool:输入apktool d testapp.apk

再打开AndroidManifest.xml:

除了这些,我们还获得了该apk的其他有用资源。

二.apktool命令相关选项(options)说明

1.概要

使用:apktool

(1)-version,--version

查看apktool版本号。

(2)-v,--verbose

使用apktool命令时输出详细内容,该参数必须作为第一个参数。

(3)-q,--quiet

隐藏输出(quiet output),即输出是不显示详细信息,该参数必须作为第一个参数。

(4)-advance,--advances

输出更详细的信息。

2.反编译(decode)

使用:apktool d testapp.apk

(1)--api

产生smail文件的api等级。(??)

(2)-b,--no-debug-info

阻止baksmail写出debug信息。

(3)-d,--debug

在debug模式下decode apk。

(4)--debug-line-prefix

在debug模式下decode时,smali中有行号前缀。

(5)-f,--force

强制删除目标目录,如在再次decode时,删除已经存在的文件夹。强制覆盖存在。

(6)--keep-broken-res

如果存在类似这样的错误:Invalid Config Flags Detected. Dropping Resouerces…,如果加上该选项,则仍然能够通过decode,但需要手动修改文件夹中报错的问题。

(7)-m,--match-original

尽量去保持跟原文件一致或接近,但不能够重新编译打包(rebuild)。

(8)-o,--output <dir>

apk反编译后输出到指定目录

(9)-p,--frame-path <dir>

指定framework文件储存的位置。

(10)-r,--no-res

阻止反编译resource,不修改resources.arsc,若仅仅修改java(smail),建议使用该选项。

(11)-s,--no-src

阻止dex文件分割,在build时仅仅移动classes.dex,若需要快速打包,建议使用该选项。

(12)-t,--frame-tag <TAG>

给生成的framework文件打上标识。

2.编译(rebuild)

使用:apktool b apptest

(1)-a,--aapt

从特殊的位置load appt,不在依赖path。

(2)-c,--copy-original

复制原始的AndroidManifest.xml 和 META-INF文件到apk,可用于保持签名。

(3)-d,--debug

在debug模式下打包。

(4)-f,--force-all

在打包时重写已经存在的文件,强制覆盖。

(5)-o,-output <file>

输出apk的位置和名字。

(6)-p,--frame-path <dir>

保存framework文件到指定目录。

三.重要补充

1.framework文件

一般来说,在用apktool反编译前不需要做其他任何事情,然而又写厂商,如小米,htc,三星等,定制了framework文件并且他们在系统应用中使用了这些文件,因此,为了能够正常反编译这些apk,则必须拷贝反编译apk依赖framework文件。

如,我们尝试编译小米桌面的MiuiHome.apk,将会得到如下错误。

使用:apktool if/install-framework <framework.apk>

再次尝试反编译MiuiHome.apk

2.签名问题

使用apktool b testapp –o out\testapp.apk,不出意外程序就会编译成功,单编译生成的testapp.apk并没有签名,还不能安装测试。一般情况下,保持原始签名不变,使用-c选项来保持。否则就要使用其他的签名工具来对apk签名了,如signapk.jar,auto-sign等。

META-INF包含apk的签名,使用-c/--copy-original来保持签名,使用原始的AndroidManifest.xml文件。但是如果修改AndroidManifest.xml文件,签名也就丢失了。就要重新对其签名。

参考文献:

apktool官网:http://ibotpeaches.github.io/Apktool/

时间: 2024-10-24 18:58:07

Apktool(3)——Apktool的使用的相关文章

mac apktool配置

Apktool:http://ibotpeaches.github.io/Apktool/install/ 最新版本2.0.1 dex2jar: https://github.com/pxb1988/dex2jar 最新版本2.0 JD-GUI: http://jd.benow.ca/ 最新版本1.4.0 这三个软件Apktool的安装稍微麻烦点,其他都还好,基本上下载下来解压了就能用. MAC上Apktool的安装 1,在官网链接里找到如下所示: 基本上按照上面的6个步骤就ok了.第一步是下载

浅谈Android反编译工具apktool,dex2jar,jd-gui

自己布局的模式或方式很固定,看见一个炫酷的界面,总想看看是怎么布局的,今天小蜗牛就带大家学习怎么使用这三个工具.. 一 去各个软件的官网下载最新的软件 二 分别介绍各个软件的使用 1.首先使用apktool 将要反编译的apk放在已经下载的apktool.bat所在目录,如下图: 然后cmd命令行输入apktool d -f xxx.apk tt  注意:xxx.apk 是要反编译的apk,  tt是把apk反编译后文件放入的地方,特别 提醒,起初不要建这个目录,执行前面的命令后自动生成的. 如

Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui

最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和windows下差不多,趁着嗑瓜子的功夫,我研究了下mac下如何进行apk反编译,其实和windows下是一样,我在这里记录了下: 第一步:下载反编译工具集,apktool.dex2jar.jd-gui,最后我会上传这些工具,解压后如下图: 下面那个弹出框是JD-GUI的,用来将字节码反编译成java源文

Apktool的安装

Apktool是google提供的apk的编译工具,有了它就可以做很多事情.比如获取apk的源码,apk汉化,对手机rom包做一些美化. 首先来看看apktool的安装(配置): 以下内容主要翻译字Apktool官网 ------------------------------------------------------------------------ 安装说明 快速检查 Apktool 2.x (apktool 1.5.2以后的版本) 是否安装 Java 1.7? 在命令行执行 jav

ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名

http://my.oschina.net/mopidick/blog/135581 以ubuntu的环境为例子,window的大同小异 首先下载apktool工具:https://code.google.com/p/android-apktool/ 注意:这个地址下载时,由于官网把apktool和apktool-install-linux-r05-ibot(或者是window下的)两个工具分开了,所以用户需要同时下载: <!-- lang: shell --> 1.apktool1.5.2.

(转)Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui

最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和windows下差不多,趁着嗑瓜子的功夫,我研究了下mac下如何进行apk反编译,其实和windows下是一样,我在这里记录了下: 第一步:下载反编译工具集,apktool.dex2jar.jd-gui,最后我会上传这些工具,解压后如下图: 下面那个弹出框是JD-GUI的,用来将字节码反编译成java源文

APKTool 提取APK文件的资源

APK文件本身是一个压缩包,直接用解压工具即可打开,但里面的文件都已被编码为二进制文件格式,不能直接看,比如程序描述文件AndroidManifest.xml. 使用apktool工具可以将这些文件解码还原出来.apktool(http://code.google.com/p/android-apktool/  现在地址是: http://ibotpeaches.github.io/Apktool/ )是一个非常著名的开源工具包,功能很强大,可以解包APK文件并重新打包,常用来汉化Android

mac下使用apktool反编译

Mac OS X: Download Mac wrapper script (Right click, Save Link As apktool) Download apktool-2 (find newest here) Rename downloaded jar to apktool.jar Move both files (apktool.jar & apktool) to /usr/local/bin (root needed) Make sure both files are exec

Android Apktool

1.  Apktool 2. 安装过程: MAC: 下载apktool脚本  wrapper script 或  package 下载apktool.jar (this here) 重命名jar to apktool.jar 拷贝文件 (apktool.jar & apktool) to /usr/local/bin (root needed) 确保(apktool.jar & apktool)是可执行文件 (sudo chmod +x apktool) 运行apktool

apktool逆向apk包

在AndroidStudio创建so一节里创建了so,并且在java里面调用so的HelloWorld方法,编译Android Studio后生成包app-debug.apk. 在逆向apk时如果该apk引用了so的话,直接用Android Killer肯定没法直接得到so里的代码,我们需要先把apk文件解包,再读取so中的代码.下面介绍用apktool解apk包. 一 工具准备 1 下载apktool,apktool下载地址:https://ibotpeaches.github.io/Apkt