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. Angularjs 如何在 post 请求时去掉因 ng-repeat 产生的 $$hashkey?

    序列化的时候用 angular.toJson 和 angular.fromJson ,不要用 Json.parse 和 JSON.stringify 就可以了.

  2. gvim编辑文件到github乱码

    with below _vimrc settings, code uploaded to GitHub will display with proper encoding set encoding=u ...

  3. UVALive - 6952 Cent Savings dp

    题目链接: http://acm.hust.edu.cn/vjudge/problem/116998 Cent Savings Time Limit: 3000MS 问题描述 To host a re ...

  4. openwrt的交叉编译

    默认情况下,openwrt编译脚本会自动从Internet上获取所需要的软件包源代码,并把下载的源码包存放在当前目录的 dl/ 目录中:  在 build_dir/ 目录中存放编译中使用的软件包,   ...

  5. Java多线程——<七>多线程的异常捕捉

    一.概述 为什么要单独讲多线程的异常捕捉呢?先看个例子: public class ThreadException implements Runnable{ @Override public void ...

  6. matrix_world_final_2012

    B http://acm.hust.edu.cn/vjudge/contest/view.action?cid=98759#problem/B 题意:瓶子侧躺在数轴上,瓶底在xlow,瓶口在xhigh ...

  7. [工作记录] Android OpenGL ES 2.0: square texture not supported on some device

    npot texture: non-power-of-two texture.rectangle texture: non-square (height != wdith) 在测试Samsumg Ga ...

  8. Win32 Plus Extra Height of Caption Bar

    you set the size of the non-client area by handling the WM_NCCALCSIZE message. But don't do this unl ...

  9. 新浪微博之XSS蠕虫脚本源码讲解

    主要是因为新浪的广场页面有几个链接对输入参数过滤不严导致的反射性XSS.======================================== 微博XSS漏洞点 weibo.com/pub/ ...

  10. CSS兼容问题大全

    1.chorme 最小字体的兼容性. 问题描述:ff和IE最小字体可设置为1px,可是chorme中文版最小字体是12px,小于12px的字体全部显示为12px.解决方案:chorme支持CSS3的, ...