文档章节

Mac环境下Android APK包反编译详解

w
 walala_Lee
发布于 2015/06/24 16:48
字数 838
阅读 47
收藏 0
点赞 0
评论 0

一、为什么需要对APK包进行反编译

公司原有的一个产品包括Android以及iOS两个版本,Android的源码不小心遗失了。但是当前这个产品又需要针对某个潜在客户做一些定制化,重建Android项目看来是必由之路了--总不能再开发一遍吧 :)。还好当时发布APK包的时候没有对代码做混淆,有救了!


二、开发环境

以下是我当前使用的开发环境:

操作系统:Mac OS 10.8.4

Android开发环境:ADT

由于我使用的是Mac系统,接下来介绍的步骤部分都是Mac系统相关的。对于Windows或者Linux的反编译步骤,大家可以参照以下。(从我的观点看,步骤还是基本相同的)


三、反编译步骤

下面就直接列举以下反编译APK文件的详细步骤及方法:

第一步:

在电脑中创建一个新的目录并将待反编译的APK文件放到该目录中。 将APK文件把文件后缀从.apk改成.zip,接下来将.zip文件解压。在解压出来的目录中你可以得到classes.dex这个文件。到此为止,你已经可以看到一些图形资源,但是xml文件以及java源代码文件还没有。 所以,得继续加油!


第二步:

从以下链接下载dex2jar,并把下载下来执行文件拷贝到.zip文件的解压目录。 打开Terminal并切换到.zip的解压目录,在Terminal中输入 ./d2j-dex2jar.sh classes.dex,按回车键后,在.zip解压目录会生成一个classes.dex.dex2jar文件。 接着通过以下链接下载Mac版的jdgui工具。下载完工具后双击改工具,运行工具后选择打开文件以打开我们刚生成的classes.dex.dex2jar.jar文件。通过在jd-gui中选中File->Save All Sources即可以将所有的class保存成java源代码文件。 到此我们已经得到想要的Java源代码了,但是解出来的XML文件还是不可读,还得继续努力!


第三步:
再创建一个新的目录,并在该目录中执行以下操作:

1、将需要反编译的.apk文件放到该目录

2、下载apktool v1.x以及Mac版的apktool install mac到该目录

3、下载framework-res.apk文件到该问路(并不是所有的待反编译的APK文件都需要framework-res.apk文件)

4、打开Terminal窗口

5、在Terminal中定位到该目录并运行以下命令:./apktool if framework-res.apk

6、在Terminal中再输入如下命令:./apktool d "myapkname".apk。 注:myapkname为你需要转换的apk包名称

执行完命令后,在新目录中找到新创建的 "myapkname" 目录,在该目录中你将得到可读的AndroidManifest.xml以及各种drawable资源。


第四步:

接下来就是将第二步以及第三步得到的Java原文件、资源文件放到同一目录,配置项目依赖jar包。。。


四、引用地址:
http://stackoverflow.com/questions/3593420/android-getting-source-code-from-an-apk-file


五、其他参考文章:
Windows环境下Android反编译详解
http://blog.csdn.net/ithomer/article/details/6727581


六、参考资源下载连接:
dex2jar:
http://code.google.com/p/dex2jar/
jdgui:
http://java.decompiler.free.fr/?q=jdgui
android-apktool:
https://code.google.com/p/android-apktool/downloads/list

工具包集合:

http://download.csdn.net/detail/missautumn/6022245

本文转载自:http://blog.csdn.net/missautumn/article/details/10415843

共有 人打赏支持
w
粉丝 3
博文 167
码字总数 50381
作品 0
深圳
Android APK反编译详解(附图)(转)

原文转自:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是...

巴顿
2015/01/16
0
0
(Mac)反编译Android APK详细操作指南[ApkTool,dex2jar,JD-GUI]

早在4年前我曾发表过一篇关于《Android开发之反编译与防止反编译》的文章,在该文章中我对如何在Windows平台反编译APK做了讲解,如今用Mac系统的同学越来越多,也有很多朋友问我能否出一篇关...

CrazyCodeBoy
05/11
0
0
android apk反编译详解

这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。 在此郑重声明,贴出来的目的不是为了去破解人家的软...

刘小米
2014/10/30
0
0
Android APK反编译详解

这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。 在此郑重声明,贴出来的目的不是为了去破解人家的软...

lhanoo
2012/02/02
0
0
mac上设置robotium环境的总结

在mac上配置robotium环境,需要注意以下几点: java jdk+jre的安装和环境变量的设置 eclipse的安装 eclipse上安卓sdk和adt的扩展和安装 安卓环境变量的设置 eclipse/mac上对安卓真机的设置...

智能小松鼠
2015/04/17
0
0
Android APK反编译详解

一、反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址: de...

蜗牛TT
2012/08/11
0
0
自用Android程序破解,逆向分析工具集

下载: git clone https://github.com/zencodex/hack-android.git 本人主要在Mac osx使用,所以linux下没经过严格测试,可能会存在小问题。签名脚本是自己写的,临时文件写到了/tmp 目录下,所...

扣丁禅师
2015/03/17
0
0
APK的反编译工具,Apktool,Dex2jar,JD-GUI等使用

http://blog.csdn.net/lostinai/article/details/44201971 http://blog.csdn.net/stayfoolishone/article/details/41659723 http://blog.163.com/ppy2790@126/blog/static/10324224120131122......

智能小松鼠
2015/04/22
0
0
Android反编译debug调试详解(一)(附图)

第一次写博客简书之类的 ,下面使劲踩我。不足之处忘指出。 前言 最近对别人一个项目挺感兴趣,就反编译玩一玩。自己真正意义上反编译并且利用Android studio Debug反编译的项目。自己利用的...

A_CUI
2017/09/20
0
0
apktool反编译工具使用详解

APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7。 如果你想对APK文件进行修改,那么就不可避免的要使用到APKTool。论坛里有很多关于ROM美化的帖子都需要自己...

带梦想一7飞
2012/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
5
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
165
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部