1. 使用apktool反编译apk

1、安装apktool

apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见《Ubuntu14.04 LTS安装JDK及其环境变量配置和Eclipse的安装》)。

下载apktool1.5.2.tar.bz2、apktool-install-linux-r05-ibot.tar.bz2两个包,并将这两个包里面的文件解压到同一个目录下(例如,我就解压到自己使用的账户目录下的apktool文件夹,绝对路径是/home/geek/apktool)。解压后得到aapt、apktool、apktool.jar三个文件。如图1所示:

图1

  1. apktool命令详解

为了方便演示,反编译apk的时候把要反编译的apk文件放到apktool安装目录下,并切换到apktool目录下,以下为命令详解:

decode

该命令用于进行反编译apk文件,一般用法为:apktool d <file.apk> <dir>

<file.apk>代表要反编译的apk文件的路径,一定要绝对路径;<dir>代表反编译后的文件的存储位置,同样也要绝对路径。示例如下:

geek@GEEK:~$ cd apktool/

geek@GEEK:~/apktool$ ./apktool d CM_WiFi.apk /home/geek/apktool/CM_WiFi

I: Baksmaling...

I: Loading resource table...

I: Loaded.

I: Decoding AndroidManifest.xml with resources...

I: Loading resource table from file: /home/geek/apktool/framework/1.apk

I: Loaded.

I: Regular manifest package...

I: Decoding file-resources...

I: Decoding values */* XMLs...

I: Done.

I: Copying assets and libs...

geek@GEEK:~/apktool$

切换到CM_WiFi目录下,可以看到这里有apk的源码(smali)、图片、xml配置和语言配置等等信息。整个反编译解包过程如图2所示。

图2

build

该命令用于编译修改好的文件,一般用法为apktool b <dir>

这里的<dir>就是刚才你反编译时输入的<dir>,输入这行命令后,如果一切正常,你会发现多了2个文件夹build和dist,其中build里面存储着编译过程中逐个编译的文件,而dist里面则存储着最终打包的apk文件。示例如下:

geek@GEEK:~$ cd apktool

geek@GEEK:~/apktool$ ./apktool b /home/geek/apktool/CM_WiFi

I: Checking whether sources has changed...

I: Smaling...

I: Checking whether resources has changed...

I: Building resources...

I: Copying libs...

I: Building apk file...

geek@GEEK:~/apktool$

切换到CM_WiFi目录下,可以看到里面多了2个文件夹build和dist,整个编译打包过程如图3所示

图3

3install-framework

该命令用于为apktool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。

  1. 使用dex2jar和JD-GUI两个工具查看Java源码

下载dex2jar和jd-gui两个包,解压(我是解压到当前用户根目录下)。将apk文件解压或者直接提取classes.dex文件,将其放到dex2jar目录下。打开终端切换到dex2jar目录下,输入【./dex2jar.sh classes.dex 】命令得到.jar文件。

图4

进入jd-gui解压安装的目录,双击jd-gui这个文件打开jd-gui,然后我们就可以打开这个.jar文件查看源码了。

图5

Ubuntu 14.04 LTS下的jd-gui跑不起来怎么办?不要慌,这时我们只要在终端执行如下命令即可。

sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6

注:本android反编译教程,是在Ubuntu 14.04 LTS 64bit环境下测试通过

上述反编译工具包下载

Uubuntu 14.04 LTS反编译apk的更多相关文章

  1. Ubuntu 14.04 LTS 64bit 编译SDL的问题

    http://blog.csdn.net/jhting/article/details/38523945 Ubuntu 14.04 LTS 64bit 编译SDL的问题 分类: C/C++2014-0 ...

  2. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  3. Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程

    Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程   在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...

  4. 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

    原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码       ...

  5. 基于Ubuntu 14.04 LTS编译Android4.4.2源码

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...

  6. 基于Ubuntu 14.04 LTS编译Android4.4.2源代码

    转载自:雨水:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码     ...

  7. [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...

  8. Ubuntu 14.04 LTS 安装和配置Bochs

    Ubuntu 14.04 LTS 安装和配置Bochs       系统是:Ubuntu 14.04 LTS 64位 安装的是:bochs-2.6.8 Bochs 需要在 X11 环境下运行,因此你的 ...

  9. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

随机推荐

  1. PHP字符串处理常用方法

    strlen("字符串");//取字符串的长度 strcmp($a,$b);  //判断两个字符串是否相同,相同返回0,$a>$b返回1,$a<$b返回-1,区分大小写 ...

  2. curl get started

    -v 显示整个通信过程 -L 自动处理目标网址的自动跳转如301跳转 -i 显示头部信息 -d 发送表单信息 -X HTTP动词 -F 文件上传 -A User Agent字段 -b cookie - ...

  3. HDU 5647 DZY Loves Connecting 树形dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5647 题解: 令dp[u][0]表示u所在的子树中所有的包含i的集合数,设u的儿子为vi,则易知dp ...

  4. 【BZOJ】【1053】【HAOI2007】反素数ant

    搜索 经典搜索题目(其实是蒟蒻只会搜……vfleaking好像有更优秀的做法?) 枚举质数的幂,其实深度没多大……因为$2^32$就超过N了……而且质数不能取的太大,所以不会爆…… /******** ...

  5. Linq to Xml示例

    Xml文件: <?xml version="1.0"?> <Software xmlns:xsi="http://www.w3.org/2001/XML ...

  6. Windows7 64位安装配置Apache2.4+PHP5.4+MySQL5.5+Xdebug

    PHP更新已经到了5.4.7了,之前是用PHPstudy安装的PHP5.2.13版本,今天有空,就把之前的集成安装卸载了.换上了新一代PHP,记录一下.. 环境:Windows7 64位(内部版本76 ...

  7. 打造XP下可运行的微型PE文件

    前几天和朋友交流技术,提到手工打造微型PE文件,他说现在网上流传的大部分版本在XP SP3下都不能运行,于是心血来潮,拍着胸脯说:“你放心,忙完了帮你做一个.”后来花了半天时间,终于打造出一个XP下可 ...

  8. ASP.NET中数据棒图,饼图,柱状图的实现

    Web中绘制图形的方法大致有: 1. VML方式:功能强大,但是非常麻烦. 推荐:http://www.elook.net.cn/vml/ 2.使用控件:Dandus, Aspose.chart,Co ...

  9. Unity3D研究院之LZMA压缩文件与解压文件

    原地址:http://www.xuanyusong.com/archives/3095 前两天有朋友告诉我Unity的Assetbundle是LZMA压缩的,刚好今天有时间那么就研究研究LZMA.它是 ...

  10. (转)c语言随机数srandom( )

    转自:http://zhidao.baidu.com/question/334364810.html调用随机数函数 rand()() 的时候, 实际得到的这个随机数并不是绝对随机的,它是以一个初始值, ...