android反编译工具总结

序:
总结反编译主要的目的在于学习。利用反编译进行相关的汉化或修改,都是不道德的!

大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.dex文件中得到.class,利用后者再得到大家垂涎已久的java文件。
下面分别针对这三种格式的文件进行反编译处理;
1.对xml文件进行包的解析,一般有两种方式:apktool(推荐)和AXMLPrinter2.jar;
2.从dex到class公认dex2jar.bat,实现反编译;公认的强者;
3.而class到java的方式要更多样化一些,因为只是查看反编译后的代码:jd-gui(推荐),Jodeclipse(Jode的Eclipse插件),JadClipse(Jad的Eclipse插件)。
还是作个大致介绍吧:
1.首先把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。
2.把class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar。
3.运行JD-GUI工具(绿色软件,好用的软件!),打开上面的jar文件,即可看到java源代码。
如果上面的步骤都可以自我完成了,那么,下面内容就可忽略不看了!

这几个软件,细分开来介绍(用步骤A(分A1,A2), B, C(分C1,C2,C3), ABC分别代表三个不同的步骤):
A1. apktool:
通常用于生成程序的源代码和图片、XML配置、语言资源等文件。我们对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。支持Linux 、Windows下工作
安装步骤:
1.安装JAVA环境(官方推荐jdk 1.6);
2.下载apktool.jar:http://code.google.com/p/android-apktool/downloads/list
点击下载apktool1.3.2.tar.bz2  和apktool-install-windows-2.2_r01-3.tar.bz2 (不一定是这个,但最好选最新版本的吧!)
3.解压apktool1.3.2.tar.bz2得到apktool.jar;
解压apktool-install-windows.zip到任意文件夹,将apktool.jar拷入此文件夹中(也有人说是直接全部拷入C:/Windows,一样的);
(目前此文件夹中有三个文件:apktool.jar/apktool.bat/aapt.exe)
4.cmd命令行进入到解压apktool-install-windows-2.2_r01-3.tar.bz2所得的文件夹,输入apktool测试是否安装成功;
安装成功后,下面开始反编译过程:
1.apktool d (要反编译的文件) (输出文件夹)
如:
apktool d XXX.apk (目标文件夹)      反编译 geek.apk到文件夹test
2.apktool b (目标文件夹)              
从目标文件夹中重建APK,生成的APK在"目标文件夹"\dist文件夹里,叫out.apk。
这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html,这里就不说了。签名后得到的APK,就是可以装到手机里的了。
A2. AXMLPrinter2.jar
将它放到android-sdk-windows-1.5_r3\tools文件夹中
运行cmd,进入tools目录,运行java -jar AXMLPrinter2.jar main.xml > main.txt;
于是我们就得到了反编译后的XML文件;
经历了这么多,我们得到的只是部分布局文件和资源文件,但java文件还是"犹抱琵琶半遮面"。

下面,让我们掀起她的红盖头来:

B. dex2jar
下载:http://code.google.com/p/dex2jar/downloads/list 
方法:
1.首先找到Android软件安装包中的classes.dex (解压得到);
它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件
2.把classes.dex拷贝到dex2jar.bat所在目录;
在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex
,生成classes.dex.dex2jar.jar,成功了一半!

C1. JD-GUI
下载:http://java.decompiler.free.fr/?q=jdgui
方便好用,直接解压得到JD-GUI,用它打开上面的jar文件,File-->Save JAR Source,即可看到梦寐以求的java源代码;
我们也可以解压B步骤得到的jar文件得到class文件,到这里,我们就要用到Jodeclipse和JadClipse了;
C2. Jodeclipse---Jode的Eclipse插件
C3. JadClipse---Jad的Eclipse插件
关于这两个Eclipse插件的安装可见下面链接:
http://tgyd2006.javaeye.com/blog/553061
(C4. 还有朋友提到DJ Java Decompiler,没用过,可以一试!)
但也有人提出此问题:
自从eclipse升级到3.3以后jad插件就一直没有成功的安装上去,网上看了好多文章也是以前版本的安装方法,3.3目前通过eclipse的software update的插件安装方式已经不行了。 
解决方法如下: 
1.从http://www.kpdus.com/jad.html#download地址下载最新的jad,我目前下载的是jadnt158.zip; 
2.从http://nchc.dl.sourceforge.net/s ... jadclipse_3.3.0.jar地址下载jadclipse_3.3.0.jar,拷贝到eclipse的plugins目录下;
3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse 下的 
Path to decompiler 如:D:\eric\jadnt158\jad.exe(jadnt158.zip解压后的目录); 
4.Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer” 
大功告成,之后在java类里按住ctrl点击类就可以看到它jad反编译后的源带码了;
如果发现安装了没有效果,可以删除eclipse主目录下的\configuration\org.eclipse.update后,再执行eclipse -clean试试

最后,将得到的java文件和得到的xml文件组合可得一个android工程,即可得到相对比较完整的apk源码;但也有些额外加的包没被编译出来。
但做到这一步已经足够用于学习,我们的目的也就达到了!
大家也可关注下这两篇文章,用的不同方法(dexdump, baksmali.jar, smali.jar),但效果也还不错:
http://blog.csdn.net/Android_Tutor/archive/2010/07/09/5724435.aspx
http://www.cnblogs.com/huyipeng/archive/2010/07/25/1784679.html
有人会说程序可以用混淆器扰乱代码,但刚从网上看到的一种关于混淆器的说法:
“用混扰器的代码一般就是去掉所有注释和把变量名、方法名和类名变成一些没意义的名字。反编译后一般都变成a, b , c,...这样的名字,只能一点点的看懂,再利用Eclipse的改名方法,一次性的吧相关的名字改成有意义的名称。”
所以,大家的关键代码最好还是打成.so库吧!要不会被一些人搞得内裤都没得穿!

时间: 2024-11-06 07:34:47

android反编译工具总结的相关文章

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方

Android反编译工具使用

目录 目录 前言 工具 流程图 获取classesdex apk jar odex baksmail smail classesdex - classes-dex2jarjar jd-gui 查看资源文件和xml apk安装 解包Apk 打包Apk 前言 为什么需要反编译? 反编译apk.例如市面上有很多优秀的apk,实现了一些很优秀的功能,而这些功能无法轻易google到的时候,我们可以通过反编译apk来查看一下这些优秀功能的实现.(好像有点无耻,但是本着一些技术的心,而不是为了盈利,我觉得可

android反编译工具 ApkDec-Release-0.1

(1 )使用帮助 1. 选择 all  全部编译内容包括jar .xml .及其他资源文件 2. 选择 jar  只反编译并打成jar 包 3. 反编译后你可以使用jd-gui.exe 查看源码 (2 )jd-gui 免费的java 反编译查看工具, 下载地址“http://java.decompiler.free.fr/jd-gui/downloads ” jd-gui ,eclipse 插件JD-Eclipse 安装使用介绍“http://www.juapk.com/thread-2647-

ApkDec android反编译工具

转自:http://www.newasp.net/soft/70498.html 下载 ApkDec是一款免费的绿色APK反编译工具 forandroid ,由android开发者社区开发. ApkDec使用说明: (1)使用帮助1.选择 all 全部编译内容包括jar.xml.及其他资源文件2.选择 jar 只反编译并打成jar包3.反编译后你可以使用jd-gui.exe查看源码(2)jd-gui免费的java反编译查看工具,Java Decompiler(Java反编译器)下载 启动界面如图

Android反编译工具的用法

Android的APK文件时可以反编译的,通过反编译我们就能查看到大体的代码,帮助学习.反编译仅仅提供的是学习的方式,禁止使用该技术进行非法活动. 其实就是两个命令: 1:运行(WIN+R)->CMD,定位到apktool文件夹,输入以下命令:apktool.bat d -f  CMCC.apk  CMCC 2:定位到dex2jar.bat所在目录,输入dex2jar.bat   classes.dex 下面进行详细的讲解: 我们所用到的工具: apktool 作用:资源文件获取,可以提取出图片

浅谈Android反编译工具apktool,dex2jar,jd-gui

自己布局的模式或方式很固定,看见一个炫酷的界面,总想看看是怎么布局的,今天小蜗牛就带大家学习怎么使用这三个工具.. 一 去各个软件的官网下载最新的软件 二 分别介绍各个软件的使用 1.首先使用apktool 将要反编译的apk放在已经下载的apktool.bat所在目录,如下图: 然后cmd命令行输入apktool d -f xxx.apk tt  注意:xxx.apk 是要反编译的apk,  tt是把apk反编译后文件放入的地方,特别 提醒,起初不要建这个目录,执行前面的命令后自动生成的. 如

Android 反编译工具

想必玩安卓的童鞋大多都知道,安卓的APK安装包是可以反编译出源代码的,如果开发人员发布时没有对其混淆等加密处理,反编译出来的代码几乎与真实的源代码一模一样. 想要反编译apk,需要用到apktool.jar,目前它已经更新了到了apktool_2.0.0rc6了.apktool.jar通过命令行 即可反编译apk,而且网上也有很多现成的工具.不过本人属于喜欢自己造车类型,能在可接受的时间内自己搞定的事一般都不会偷懒. 今天给大家带来的是我在昨晚写的一个使用apktool.jar的win32外壳程

Android反编译和二次打包实战

作为Android开发者,工作中少不了要反编译别人的apk,当然主要目的还是为了学习到更多,取彼之长,补己之短.今天就来总结一下Android反编译和二次打包的一些知识.首先声明本文的目的是为了通过例子讲解反编译和二次打包的原理和方法,继而作为后续讲解防止二次打包和App安全的依据,并不是鼓励大家去重新打包别人的App,盗取他人劳动成果. 本文首先介绍几种Android反编译工具的使用,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali文件实现修改apk逻辑功能的目的. And

Android反编译

在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看.下面是我参考了一些文章后简单的教程详解. (注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平.) 测试环境: win 7 使用工具: CSDN上下载地址: apktool (资源文件获取)  下载