Android中对APK进行反编译

概述:

其实反编译很简单,只是利用一些工具包和一些基本命令行的命令对apk文件进行反编程,没有什么高深的技术。下面就让我们一起来学习一下反编译的技术。

注:本博客反编译方法,仅供参考学习使用,禁止用于非法和商业等用途,谢谢!

准备工作:

下载以下反编译工具包:

1.apktool:http://download.csdn.net/detail/vipzjyno1/7025111

2.dex2jar:http://download.csdn.net/detail/vipzjyno1/7025127

3.jd-gui:http://download.csdn.net/detail/vipzjyno1/7025145

待反编译的apk文件:helloworld.apk

工具功能介绍:

apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看

dex2jar:将apk反编译成java源码(classes.dex转化成jar文件)

jd-gui:查看APK中classes.dex转化成出的jar文件,即源码文件

反编译过程:

1.获得资源和资源文件:

我们是利用apktool来获得资源和资源文件的。

(1)首先将我们待反编译的文件置于apktool目录下。

(2)然后在cmd下切换操作目录为apktool。例如我的操作目录如下:

(3)输入反编程指令:apktool.bat d -f helloworld.apk  helloworld

此次反编译过程会有如下正确过程:

反编译完成,apktool目录下会生成一个helloworld的目录:

打开此目录我们就可以清楚地看到反编译的结果了,如下:

至次,获得资源和资源文件的操作已经全部结束。下面就让我们来看看怎么反编译获得java源码。

2.获得java文件:

获得java源码文件会稍微有一些麻烦,因为这个过程需要用到两个工具包——dex2jar和jd-gui.

第1步:重命名helloworld.apk为helloworld.rar或是helloworld.zip等可以解压文件.

第2步:解压此文件到helloworld文件夹,获取classes.dex文件

第3步:将classes.dex文件置于dex2jar目录下,并切换工作目录至dex2jar下,输入指令:dex2jar.bat classes.dex

第4步:第3步完成之后会生成一个classes_dex2jar.jar文件

进行到这里的时候离成功只有一步之遥了。

第5步:打开jd-gui目录下的jd-gui.exe文件—>打开刚刚生成的classes_dex2jar.jar文件—>查看源码

参考:

http://blog.csdn.net/vipzjyno1/article/details/21039349

时间: 2024-10-10 16:35:41

Android中对APK进行反编译的相关文章

android apk 防止反编译技术第一篇-加壳技术

做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想

android apk 防止反编译技术第二篇-运行时修改字节码

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

Android Apk的反编译和加密

这几天在上海出差,忙里偷闲学习了一下Apk的反编译工具的基本使用.下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码. 一.Apk文件组成 Android的应用程序APK文件说到底也是一个压缩文件,那么可以通过解压缩得打里面的文件内容,不过很显然,当你去解压完去查看的时候,发现里面的很多东西和你想象中的不太一样.资源文件等xml文件基本打不开,即使打开了也都是乱码(而这正是Android进行加密过),有些应用会将图片资源等的也加密(如qq音乐). 而既然

android apk 防止反编译技术第四篇-对抗JD-GUI

又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372).运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.oschina.net/u/2323218/blog/399326),如果有不明白的可以查看我的博客的前三篇中关于这

android apk 防止反编译技术第三篇-加密

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

android apk 防止反编译技术第二篇-运行时修改Dalvik指令

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

转: android apk 防止反编译技术(1~5连载)

转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序

Android项目打包apk及apk的反编译

一.项目打包的一般原理及其缺点 (1)开发一个简单的项目,发布的时候为一个APK文件,如果我们不使用签名的方式,直接在bin目录下找到*.apk文件,很方便,但是我们的使用者在使用的时候,有可能会被其他的程序覆盖安装:具体解释如下: (2)我们新建一个项目Test目录结构如下,并把它发布到模拟器上,得到我们的打包文件Test.apk (3)然后我们在看模拟器中的文件目录信息,我们在安装的应用,都会在安卓机器上的data----data---具体的安装文件夹,例如我的是:com.example.t

android apk 防止反编译技术第五篇-完整性校验

关于防止android apk被反编译的技术我们前面已经讲了四种. 加壳技术 运行时修改字节码 伪加密 对抗JD-GUI 如果有不明白的可以查看我的博客的前四篇中关于这四种技术的介绍.接下来我们接着介绍另一种防止apk反编译的技术-完整性校验. 一.完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改.其中常用的方法就是计算一个文件的CRC32的值或者计算一个文件的哈希值.我们在防止apk被反编译的方法中也可以采用这种方法.我们知道apk生成的classes