Uubuntu 14.04 LTS反编译apk
使用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
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
3、install-framework
该命令用于为apktool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。
使用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的更多相关文章
- Ubuntu 14.04 LTS 64bit 编译SDL的问题
http://blog.csdn.net/jhting/article/details/38523945 Ubuntu 14.04 LTS 64bit 编译SDL的问题 分类: C/C++2014-0 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程
Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程 在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...
- 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码
原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 ...
- 基于Ubuntu 14.04 LTS编译Android4.4.2源码
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...
- 基于Ubuntu 14.04 LTS编译Android4.4.2源代码
转载自:雨水:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 ...
- [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程
本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...
- Ubuntu 14.04 LTS 安装和配置Bochs
Ubuntu 14.04 LTS 安装和配置Bochs 系统是:Ubuntu 14.04 LTS 64位 安装的是:bochs-2.6.8 Bochs 需要在 X11 环境下运行,因此你的 ...
- 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1
目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...
随机推荐
- Java 7 中 NIO.2 的使用——第一节 Path 类的使用
路径隶属于文件系统,实际上它是存储和组织媒体文件的格式,通常在一块或多块硬盘设备上,以便于非常容易地检索.文件系统可以通过 java.nio.file.FileSystems 这个final 类来访 ...
- Byte measurements
- mysql--乱码
不知道为什么utf8反而会乱码,每次都是设gbk,,唉这样写项目的时候也是有点问题的T T set names gbk; 版权声明:本文为博主原创文章,未经博主允许不得转载.
- BZOJ 3143 HNOI2013 游走 高斯消元 期望
这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...
- log4j 配置实例
1. http://hehongwei44.iteye.com/blog/1494999 2. http://maymay.iteye.com/blog/1275432 #log4j.rootLogg ...
- Poj 1255 覆盖的面积 2014-07-28 12:29 116人阅读 评论(0) 收藏
覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- Asp.net页面无刷新请求实现
Asp.net页面无刷新请求实现 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu ...
- Codeforces Round #247 (Div. 2) C题
赛后想了想,然后就过了.. 赛后....... 我真的很弱啊!想那么多干嘛? 明明知道这题的原型就是求求排列数,这不就是 (F[N]-B[N]+100000007)%100000007: F[N]是1 ...
- 【hadoop】mapreduce原理总结
看了两天的各种博客,终于把MapReduce的原理理解了个大概.花了1个小时画了个流程图.大家看看,有不对的地方欢迎指正. 关键步骤: Map, Reduce就不多说了.记录一下我看了很久的部分: 1 ...
- PHP 判断是否包含某字符串
PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数 strstr,strpos,stristr直接进行判断.也可以通过e ...