Android 如何反编译 不指定

Heck post in 编程杂谈 2010/09/27 18:51 评论(0) 阅读(1200) | |
       至于干嘛要反编译,嘿嘿!目的咱就不说了。。。
先说些预备知识:classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。

一般使用dexdump和Dedexer可以反dex,但是用过的人都知道这样反出来的结果可读性极差。在这个时候大家一定要相信互联网的力量,所谓只要你能想到的或许就已经有人已经做到了。瞧瞧吧,我下面要介绍的就是别人已经给我们做好的几个工具。

dex2jar,这个别人写的一个把.dex files转换成Java .class的小工具,很不错。基本使用方法如下:在apk中提取classes.dex文件 -> 利用dex2jar把dex转换成java jar(classes.dex2jar.jar)


到这里了,我们用普通的java反编译工具就可以看到代码了。我使用的是JD-GUI,这是一个有界面的java(.class) 代码浏览器,简单实用!另外还提供了一个Eclipse plugin(JD-Eclipse),可以吧JD-GUI的功能集成到Eclipse里面。

最后,在提供一个与Layout相关的工具,AXMLPrinter2.jar,该工具能吧apk中的xml文件转换成文本格式,这样就就可以直接欣赏别人程序中界面布局的实现方式啦。当然Android SDK也提供了一个类似的工具(hierarchyviewer.bat),个人感觉还不入AXMLPrinter2.jar转成xml后直接看来得痛快。

文中提到的所有工具都是开源或免费的,感谢这些无私奉献的人们,附工具的链接:
    dex2jar
    JD-GUI
    AXMLPrinter2
    Dedexer


来源:Heck's Blog
地址:http://www.hecks.tk/how-to-android-reflect/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
Tags: ,