以下方法仅供学习使用,不得随意反编译apk文件并使用
资源位置,同样在csdn资源页中:apk反编译工具包下载
方法一:
直接使用文件夹中的Androidby 文件夹中的Android反编译工具(64)位.exe或者使用Android反编译工具.exe,双击后选择需要反编译的apk文件即可。但是该方法往往不成功,会由于签名等原因报错,如果成功反编译生成的文件中xml文件是可以直接查看的不会乱码,但是clases.dex文件不一定会反编译成功,所以下面介绍其他方法。
方法二:
使用apktool直接将apk文件反编译为文件夹
用法:apktool d -f <.apk文件的详细路径> <生成文件夹的详细路径>
(使用中注意最好文件夹名字不要中间有空格,其次最好将apk文件名称改的简单一点且不要出现中文)
不过由于反反编译机制使用该方法也会抛出异常,由于各个apk文件控制的不同此时得到的文件夹中内容就不太一样了,有些apk可以反编译成功有些就不行,如果得到xml文件但是乱码,后面有讲解方法,得到classes.dex 文件后面也有讲解,得到smali或均为该后缀的文件破解后面也有讲解。
通过上面步骤可以得到classes.dex文件该文件为java转为Android中运行的文件,使用dex2jar工具将其变为jar包方法如下:
dex2jar <classes.dex文件的详细路径>
执行完该命令后会自动在classes.dex文件路径下生成文件:classes_dex2jar.jar
再用文件夹中的jd-gui-0.3.5.windows文件夹下的jd-gui.exe
查看jar文件中的java文件这样就可以看到源java代码,不过可能由于加入混淆代码会使得文件名变为aaa之类。
也可以直接解压apk文件因为apk文件本身就是压缩包的形式,直接解压后里面的东西都有不过由于签名等原因直接解压的文件里面的res或者其他xml文件会变成乱码,下面介绍可以将xml变为正常的形式的工具。
打开文件夹下的反编译xml文件夹,将要反编译的xml文件复制到layout目录下,直接复制双击.bat文件即可运行
如若.bat文件损坏,在有java环境下运行-jar文件包 即可
.bat 文件内容
for /r layout %%a in (*.xml) do @java -jar AXMLPrinter2.jar"%%a" >>"%%a".txt
下面介绍因为有反反编译机制后的classes.dex文件的其他方法,打开文件夹下面的Baksmali_Smali文件夹把apk文件解压,找出classes.dex文件。
1、然后先用baksmali把classes.dex导出一个classout文件夹.命令为:java-jar baksmali-1.4.2.jar -o classout/ classes.dex(注意classout\后面的空格)
2、用smali把classout文件夹转换成classes.dex(这是转换过的).命令为:java-jar smali-1.4.2.jar classout/ -o classes.dex(注意classout\后面的空格,此文件位置也可自定义)
3、使用 dex2jar 把classes.dex转换成jar ,命令为:dex2jar.bat classes.dex
4、然后使用jd-gui 打开这个jar.
前面提到的samli文件或以.samli后缀的文件使用,即为从第2步操作就好,不过将classout文件夹换做现有文件夹就好。