一。反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
二。反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工 具,可以直接查看Jar包的源代码。
具体步骤:
首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录,
运行 “dex2jar.bat classes.dex”
生成classes.dex.dex2jar.jar
首先解决关于命令行定位问题:(命令行快捷键是 win+R)
“CMD”后 要确定你的工具包所在的位置,当不在c盘时首先定位为相应的盘,如:D盘。转换方式为“D:”按enter键确定,
然后在首先输入“CD”空格后 再定位dex2jar.bat所在文件位置,最后把“dex2jar.bat classes.dex”复制到dex2jar.bat所在文件位置的后面按下enter键即可。
生成classes.dex.dex2jar.jar
如下
生成classes.dex.dex2jar.jar
然后,进入jdgui文件夹双击jd-gui.exe,找到生成的
classes.dex.dex2jar.jar压缩包打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:
三、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法
这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。
baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具
操作方式如下:
1、java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml > AndroidManifest.txt
2、java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt
3、java -jar baksmali-1.2.5.jar -o classout/ d:\play\classes.dex
完成。