http://blog.csdn.net/wirelessqa/article/details/8997168
http://code.google.com/p/android-apktool/downloads/list
1.下载apktool.jar — 解压
2.下载Mac上的辅助工具apktool-install-macosx.. – 解压
3. 将apktool.jar放到apktool-install-macosx..目录下,也就是跟apktool命令放到一起
4.运行sh apktool
01 |
bixiaopeng@bixiaopengtekiMacBook-Pro
~$ /Users/bixiaopeng/Downloads/apktool-install-macosx-r05-ibot/apktool ; exit; |
02 |
Apktool
v1.5.2 -
a tool for reengineering
Android apk files |
03 |
Copyright 2010 Ryszard
Wi?niewski <brut.alll@gmail.com> |
04 |
with
smali v1.4.1,
and baksmali v1.4.1 |
05 |
Updated
by @iBotPeaches <connor.tumbleson@gmail.com> |
06 |
Apache
License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) |
09 |
Usage:
apktool [-q|--quiet OR -v|--verbose] COMMAND […] |
15 |
d[ecode]
[OPTS] <file.apk> [<dir>] |
16 |
Decode
<file.apk> to <dir>. |
23 |
Do
not decode sources. |
25 |
Do
not decode resources. |
27 |
Decode
in debug mode. Check project page for more
info. |
29 |
Baksmali
-- don't write out debug info (.local, .param, .line, etc.) |
31 |
Force
delete destination directory. |
32 |
-t
<tag>, --frame-tag <tag> |
33 |
Try
to use framework files tagged by <tag>. |
35 |
Use
the specified directory for framework
files |
37 |
Use if there
was an error and some resources were dropped, e.g.: |
38 |
"Invalid
config flags detected. Dropping resources",
but you |
39 |
want
to decode them anyway, even with errors. You will have to |
40 |
fix
them manually before building. |
43 |
b[uild]
[OPTS] [<app_path>] [<out_file>] ----从你给出的本地路径构建一个apk |
44 |
Build
an apk from already decoded application located in <app_path>. |
47 |
It
will automatically detect, whether files was changed and perform |
51 |
If
you omit <app_path> then current directory will be used. |
52 |
If
you omit <out_file> then <app_path>/dist/<name_of_original.apk> |
60 |
Skip
changes detection and build all files. |
62 |
Build
in debug mode. Check project page for more
info. |
64 |
Loads
aapt from specified location. |
67 |
if|install-framework
<framework.apk> [<tag>] --frame-path [<location>] |
68 |
Install
framework file to your system. |
71 |
For
additional info, see: http://code.google.com/p/android-apktool/ |
72 |
For
smali/baksmali info, see: http://code.google.com/p/smali/ |
(1)先查看$PATH的配置

(3) 接下来你就可以直接使用apktool了
三.APKTOOL的命令解释
1.反编译APK命令
apktool d <file.apk> <dir>
<file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk
<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer
-f指令
apktool d –f <file.apk> <dir>
apktool b <dir>
这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会
发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题
四.APKTOOL使用实例
4.1 反编译新浪微博的APK
01 |
bixiaopeng@bixiaopengtekiMacBook-Pro
~$ apktool d /Users/bixiaopeng/Downloads/com.sina.weibo.apk /Users/bixiaopeng/work-folder/OWL-APKTOOL |
03 |
I:
Loading resource table… |
05 |
I:
Decoding AndroidManifest.xml with resources… |
06 |
I:
Loading resource table from file: /Users/bixiaopeng/Library/apktool/framework/1.apk |
08 |
I:
Regular manifest package… |
09 |
I:
Decoding file-resources… |
10 |
I:
Decoding values */* XMLs… |
12 |
I:
Copying assets and libs… |
作者:毕小朋 出处: http://www.wirelessqa.com 欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望您能推荐或关注。
反编译后的结果:
1 |
bixiaopeng@bixiaopengtekiMacBook-Pro
~$ apktool b /Users/bixiaopeng/work-folder/OWL-APKTOOL |
2 |
I:
Checking whether sources has changed… |
3 |
I:
Checking whether resources has changed… |

4.3 自动签名
1 |
bixiaopeng@bixiaopengtekiMacBook-Pro
dist$ jarsigner -verbose -keystore bxp.keystore -signedjar new.apk
com.sina.weibo.apk bxp.keystore |
【keystore】:bxp.keystore
【签名前的apk名字】:com.sina.weibo.apk
1 |
keytool
-genkey -keystore bxp.keystore -keyalg RSA -validity 10000 -alias
bxp.keystore |
-genkey 产生证书文件
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法
-validity 为证书有效天数,这里我们写的是10000天。
-alias 产生别名
注意:
2. 在用keytool生成数字证书时必须保证:-keystore androidapp.keystore -alias
androidapp.keystore 两者名称必须相同。否则下一步签名时会出现错误:jarsigner: 找不到
androidapp.keystore 的证书链。androidapp.keystore
必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。
- 2014 非常好用的开源 Android 测试工具
http://www.php100.com/html/it/mobile/2014/1015/7495.html 当前有很大的趋势是转向移动应用平台,Android 是最广泛使用的移动操作系统,201 ...
- Android Studio中mac上面的安装
Android Studio中mac上面的安装 学习了:https://blog.csdn.net/xianrenli38/article/details/79347170 http://www.an ...
- Infer 在 Mac 上的安装和环境配置
Infer 在 Mac 上的安装和环境配置 Infer 介绍 Infer 是一个静态分析工具.Infer 可以分析 Objective-C, Java 或者 C 代码,报告潜在的问题. 任何人都可以使 ...
- Mac上刚安装的WebStorm或PHPStorm遇到SVN版本太旧的问题
Mac上刚安装的WebStorm或PHPStorm遇到SVN版本太旧的问题: URL: svn: E155021: This client is too old to work with the wo ...
- Mac上Hive安装配置
Mac上Hive安装配置 1.安装 下载hive,地址:http://mirror.bit.edu.cn/apache/hive/ 之前我配置了集群,tjt01.tjt02.tjt03,这里hive安 ...
- 一点MongoDB的基础及mongodb在mac上的安装
最近发现维持写博客的习惯还是挺困难的,尤其对我来说,计划好的事过了好长时间才想到要去做. 这段时间一直在熟悉MongoDB,首先我是参考的这一篇:8天学通MongoDB 原博主写得非常好,我这里就 ...
- MAC 上编译安装nginx-rtmp-module 流媒体服务器
MAC 上编译安装nginx-rtmp-module 流媒体服务器 记录踩坑过程 下载nginx和nginx-rtmp-module wget http://nginx.org/download/ng ...
- 常见Android测试工具简介
在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...
- Android 测试工具集01
Appium是一个支持原生,混合和移动web apps的开源的跨平台测试框架工具. ANDROID依赖 Android SDK API >= 17 (Additional features re ...
随机推荐
- arduino上使用sprintf()函数输出float值出错
如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn't work.弄了很久,还以为是没学c++的原因.其实在arduino上,这个函 ...
- Linux下使用fdisk发现磁盘空间和使用mount挂载文件系统
若在安装Linux系统时没有想好怎么使用服务器,开始时只分了一部分给根目录.后面需要再使用时,可以通过几下一步进行分区和挂载文件系统. 看磁柱数使用情况 fdisk -l Disk /dev/sda: ...
- jq中 offset()方法, scrollTop()方法以及scrollLeft()方法
offset()方法是用来获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效. scrollTop()方法是用来获取元素的滚动条距离顶端的距离. scro ...
- Android关于主线程和非主线程
必须在主线程执行的任务: (1)UI更新 必须在非主线程中执行的任务 (1)Http请求 如执行:ImageHelper.getInstance().loadImageSync(picUrl); 外面 ...
- Hibernate控制insert\update语句
- Apache脚本路径别名(CGI接口)
CGI:Common Gateway Interface(通用网关接口)使WEB可以跟一个应用程序进行通信,从通信环境中获得结果. CGI是不安全的,需要mod_alias,mod_cgi模块 Scr ...
- jquery中对小数进行取整、四舍五入的方法
再和大家分享一个对多位小数进行四舍五入的方法: <script language="javascript"> //对多位小数进行四舍五入 //num是要处理的数字 v为 ...
- scala言语基础学习七
一.将函数赋值给变量 二.匿名函数 三.高阶函数 高阶函数好像调用不打印是看不到赋值 和普通函数区别 高阶函数的类型推断 reduce操作 相当于1*2*3*4*5*6*7*8*9 def getNa ...
- Visual Studio 2012 update3 安装后的问题及解决
安装之后可能遇到的问题: 安装完时,打开Help Viewer时,出现了一个错误提示:”a content file required by the help viewer is missing or ...
- strlen() 函数
strlen() 函数通常用来计算字符串的长度,但是今天突然发现个奇怪的现象. 如下所示: #include <stdio.h> #include <stdlib.h> #in ...