有时候我想要查看别人的app的源代码,这时候就需要使用到反编译,而不能直接导入APK进eclipse的(如果可以,那岂不是盗版很多了?)。首先,APK是可以用压缩工具(WinRAR)进行解压的,解压结果如下图
其中res文件夹里装的是我们的资源文件(图片)和布局文件,AndroidManifest就是对应android项目里的AndroidManifest,classes.dex就是编译过的源代码,resources.arsc和META-INF这个文件不关我们的事。
下面开始进行反编译
1.下载相关软件
1)AXMLPrinter2(我的网盘http://pan.baidu.com/s/1milcm9q)
用途:用来转换.xml文件为文档,这样就可以用记事本查看了。
2)dex2jar(我的网盘http://pan.baidu.com/s/1nvb6JjV)
用途:用来转换dex文件为jar文件。
3)jd_gui(我的网盘http://pan.baidu.com/s/1o8KjZa6)
用途:用来阅读jar文件的
2.用AXMLPrinter2转换.xml文件
语法:java -jar 工具名(例如AXMLPrinter2) .xml文件路径>输出文件路径
详细步骤:首先把下载的工具包解压,并把里面的AXMLPrinter2.jar拷贝到和APK解压后的需要编译的.xml文件同一个文件夹(这样做的目的是在dos命令行下就可以用文件名 代替路径了,因为它们在同 一个目录下),然后在命令行下用CD切换到需要编译的.xml所在目录,最后运行java -jar AXMLPrinter2.jar .xml文件路径>输出文件路径;例如我们要转换AndroidManifest.xml,如下图
1)把AXMLPrinter2.jar拷贝到和AndroidManifest.xml文件同一个文件夹
2)切换到AndroidManifest.xml文件所在文件夹,并运行转换命令
3)在AndroidManifest.xml文件所在文件夹里生成了AndroidManifest文件。可以用记事本查看了
3.用dex2jar文件转换.dex文件为.jar文件
语法:d2j-dex2jar.bat工具所在路径 classes.dex文件路径
详细步骤:首先把下载的工具包解压,并把里面的dex2jar文件夹拷贝到APK解压后的根目录下,然后在命令行下用CD切换到dex2jar文件夹,最后运行d2j-dex2jar.bat ../classes.dex,如下图
1)把dex2jar文件夹拷贝到APK解压后的根目录下
2)切换到dex2jar文件夹,并运行转换命令
3)在APK根目录下生成了classes_dex2jar文件。
4.用jd_gui工具查看源代码
详细步骤:首先解压下载的工具包,然后点击jd-gui应用程序,点击file->open file,添加classes_dex2jar。如下图