`
xp9802
  • 浏览: 1179353 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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库吧!要不会被一些人搞得内裤都没得穿!

分享到:
评论

相关推荐

    android反编译工具集合以及攻略全新

    总结反编译主要的目的在于学习。利用反编译进行相关的汉化或修改,都是不道德的! 大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.dex文件中得到.class...

    Android开发apk反编译和二次打包教程

     本文首先介绍几种Android反编译工具的使用,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali文件实现修改apk逻辑功能的目的。  Android中常用的反编译工具有三个:dex2jar、jd-gui和apk

    反编译Andoird工具集(附反编译步骤)

    对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了... 总结反编译主要的目的在于学习。利用反编译进行相关的汉化或修改,还是尽量不要吧,毕竟人家写个程序不容易啊!

    自创安卓的反编译工具

    自己总结的安卓反编译工具,可以看一些大神们的写作逻辑

    apk反编译.zip

    apk包反编译工具,是跟据前人的经验总结出来的,希望能帮到大家

    代码混淆,及反编译

    代码混淆、Android、反编译、文档、详解;有自我总结的详细文档。现来分享。

    图文apk反编译白痴文档(全)

    总结反编译apk的方法和工具, 有工具的下载地址和图片解说。

    Android开发技巧总汇(个人总结)

    目录 1.坐标传递到google Map 2 2.获得联系人 5 3.监听短信内容 6 4.3D魔方 7 5.Android 界面刷新 16 6.Cursor 17 ...1.APK反编译工具.rar 60 2.APK安装工具.rar 60 47.Google Maps 的应用 60

    android开发资料大全

    Android如何防止apk程序被反编译 Android 之 AIDL 和远程 Service 调用 Android 相对布局技巧 android开发环境之Logcat(日志)教程实例汇总 android网络通信之socket教程实例汇总 AsyncTask进度条加载网站数据到...

    java反编译源码-android_app_security_crack:安卓应用的安全和破解

    且总结了和安卓反编译、逆向工程、分析等相关的各种工具和软件。 源码+浏览+下载 本书的各种源码、在线浏览地址、多种格式文件下载如下: Gitbook源码 如何使用此Gitbook源码去生成发布为电子书 详见: 在线浏览 ...

    android群雄传

    9.5.3 Android Apk反编译 223 9.5.4 Android Apk加密 226 第10章 Android性能优化 227 10.1 布局优化 228 10.1.1 Android UI渲染机制 228 10.1.2 避免Overdraw 229 10.1.3 优化布局层级 229 10.1.4 避免嵌套...

    开源免费 APK 编辑器 APK Editor Studio 1.4.0 中文多语免费版.zip

    APK 反编译工具 APK Editor Studio 中文版APK 反编译工具 APK Editor Studio 中文版 APK Editor Studio 特色: 图标编辑器可轻松更改 Android 应用程序图标。 标题编辑器可快速编辑包括翻译在内的 Android 应用标题...

    APK 编辑器 APK Editor Studio 1.4.0 中文多语.zip

    APK 反编译工具 APK Editor Studio 中文版APK 反编译工具 APK Editor Studio 中文版 APK Editor Studio 特色: 图标编辑器可轻松更改 Android 应用程序图标。 标题编辑器可快速编辑包括翻译在内的 Android 应用标题...

    Java虚拟机

    1.4.6 Apache Harmony Google Android Dalvik VM 1.4.7 Microsoft JVM及其他 1.5 展望Java技术的未来 1.5.1 模块化 1.5.2 混合语言 1.5.3 多核并行 1.5.4 进一步丰富语法 1.5.5 64位虚拟机 1.6 实战:自己...

Global site tag (gtag.js) - Google Analytics