linux下反编译android apk
1、所需要的工具
1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等,
下载地址:https://code.google.com/p/android-apktool/downloads/list
需要下载apktool1.5.2.tar.bz2 和apktool-install-Linux-r05-ibot.tar.bz2 这两个文件,并把解压后的文件放在同一个文件夹中。
2)dex2jar,功能:反编译出jar文件,即apk的源程序文件的字节码,
下载地址:http://code.google.com/p/dex2jar/downloads/list
3)jdgui,功能:查看dex2jar反编译出的jar文件,使用该工具可以看到字节码对应的Java源代码,这个我在官网上没有找到,然后自己在网上下载的,但试验过能用。点击打开后,如下图所示:
2、反编译过程
1)反编译出资源文件
使用apktool工具,进入apktool所在的目录下,使用如下的命令:
    ./apktool d ./xxx.apk(apk所在的路径)
d表示decode,在当前目录下就会生成一个名为xxx的目录,里面就是反编译出来的各种资源文件,其中res表示资源文件,smali表示源代码,不过是字节码,不能直接查看。
以本人的实验为例子,如下图所示:
此时会在当前目录下生成一个目录app-debug。
2)源代码的反编译
a)因为apk文件其实是使用zip进行打包压缩生成的文件,所以先把xxx.apk文件改名为xxx.zip文件,并对其进行解压。
b)进入解压后的目录,其中有一个classes.dex文件,这个文件就是java文件编译再通过dx工具打包而成的,源代码就包含在这个文件中。
c)把前一步生成的文件classes.dex复制到dex2jar工具的根目录中,并使用如下命令对其进行反编译:
    ./dex2jar.sh d classes.dex
就会在当前目录下生成一个classes_dex2jar.jar文件
d)点击打开jdgui工具,这是一个图形化的工具,然后打开上上述的classes_dex2jar.jar文件就可以看到apk对应的源代码。
对于本人的实验如下:
源代码与反编译出来的代码比较如下(白色为反编译内容,黑色为原内容):
linux下反编译android apk的更多相关文章
- 『原』在Linux下反编译Android .apk文件   使用apktool dex2jar JD-eclipse
		
一.使用apktool 将 apk反编译生成程序的源代码和图片.XML配置.语言资源等文件 具体步骤: (1)下载反编译工具包:apktool 官方的打不开 http://apktool.shouji ...
 - mac下反编译android apk
		
所需要的工具 http://pan.baidu.com/disk/home#path=%252Fandroid%252Fdecompile%252Fapktool-all apktool用于将资源文件 ...
 - Mac 下反编译Android APK
		
准备工作:安装ApkTool.dex2jar.JD-GUI 安装ApkTool 1.下载ApkTool.大家可以从 https://ibotpeaches.github.io/Apktool/inst ...
 - 反编译Android APK及防止APK程序被反编译
		
怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式 ...
 - 实例具体解释:反编译Android APK,改动字节码后再回编译成APK
		
本文具体介绍了怎样反编译一个未被混淆过的Android APK,改动smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk不管输入什么样的username和password都能 ...
 - 反编译android APK
		
我们经常会在如下的情况使用反编译 1.看到别人应用中的酷炫功能,想知道是如何实现的 2.别人应用的素材排版好漂亮,想套用模仿 百度一下就已经有一大堆反编译的教程了,我还是坚持学习记录一下. A ...
 - Mac上反编译Android apk安装包
		
什么是反编译 我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一 ...
 - 只需三步--轻松反编译Android Apk文件
		
安卓程序是通过java语言进行编写的,可以很容易进行反编译.很多apk文件被反编译后再二次打包,就成了自己的产品,很是流氓.下面我们来看看如何进行apk的反编译,以及常用的防反编译手段. 一.反编译A ...
 - 反编译Android的apk包得到源码(使用工具:dex2jar和jd-gui)
		
1. 先从 http://download.csdn.net/detail/dingyuming1991/9618125 下载反编译工具dex2jar和jd-gui(当然也可以google搜索下载): ...
 
随机推荐
- 在UnrealEngine中用Custom节点实现径向模糊
			
//input NotUse 为了开启SceneTextureLookup函数而连接的节点,但是不参与逻辑 //input UV 屏幕缓存的坐标坐标 //input Strength 力度 //inp ...
 - 【整理】Java 11新特性总结
			
闲语 2018年9月25日,Java 11正式发布,与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11.Oracle直到2023年9月都会为 ...
 - Java 8 (二) 新的时间API
			
新的时间API 一)时间线 Instant对象:表示时间轴上的一个点,原点为1970-1-1的午夜. Duration对象:表示一段时间. 注意Instant和Duration类都是final. 二) ...
 - BUG——Celery ValueError: not enough values to unpack
			
背景 最近因项目需要,学习任务队列Celery的用法,跟着官网写Demo,出现如题错误,最终在github的Issues里找到解决办法,记录如下. 场景还原 本地环境如下: Windows 7 Pyt ...
 - hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)
			
[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形 ...
 - 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习3
			
#include <iostream>#include <cstring>using namespace std;int main(){ char fname[20]; cha ...
 - jsp 出现cannot be resolved to a type问题解决办法
			
(1)检查<%@ page import>是否导入了相关的包.若是没有则需导入 (2)若导入相应的包后问题仍然存在则需创建相关的servlet
 - 【二分图带权匹配】Anagram @山东省第九届省赛 A
			
题目描述 Orz has two strings of the same length: A and B. Now she wants to transform A into an anagram o ...
 - PowerBI发布到网页
			
如果网页当中需要嵌入PowerBI的报表,可以在PowerBI当中生成链接,然后网页或者博客当中插入这一段html代码. 以下是PowerBI生产网页链接的示例,并且在博客的最后也插入了PowerBI ...
 - Arcmap内容列表刷新
			
Arcmap内容列表刷新ILayer pLayer = pFDOGLayer as ILayer; if (!pLayer.Visible) ...