记录一下反编译的历程
反编译要确保apk的源码没有混淆,否则反编译过后也没什么可用的东西
1.在线反编译
很简单,一个网站,把apk放入就可以,只不过编译速度较慢,较大的项目还是不要用这种方式
网址:http://www.javadecompilers.com/apk
2.apktool工具
主要介绍这种方式,最原始,最常见
需要一下工具
1.apktool,谷歌提供的编译工具,主要用来获取资源文件,网址:https://ibotpeaches.github.io/Apktool/install/
2.dex2jar,将classes.dex转化成jar文件,网址:http://sourceforge.net/projects/dex2jar/files/
3.jd-gui-windows,用来查看 jar 包里面的代码的一种工具,网址:http://jd.benow.ca/
我上传了三个工具的压缩包,也可以去下载,网址:https://download.csdn.net/download/zyz18813049204/16301808
工具下载好,开始
1.得到资源文件,上边说了,需要用到apktool工具
解压完我的资源可以得到apktool.bat、apktool.jar、aapt.exe,将需要反编译的apk放到一个目录里,打开cmd,定位到当前目录,输入以下命令:apktool.bat d -f winsh.apk -o text
winsh.apk就是你要反编译的apk,text就是输出的文件夹,这两个自定义,等待执行完毕,文件夹中会多处一个text文件夹,res文件夹就是资源文件了,这里的java类都是smali格式,无法识别
2.apk反编译得到java源码
将要反编译的apk后缀修改为.zip或.rar,解压,得到classes.dex文件,讲这个文件复制到dex2jar-2.0 文件夹内,然后打开cmd,定位到当前目录,执行d2j-dex2jar.bat classes.dex
执行完毕,在文件夹中会生成classes_dex2jar.jar文件,这个就是反编译后的java文件了
3.查看classes_dex2jar.jar文件
打开jd-gui.exe工具,open file直接打开classes_dex2.jar文件,现在就反编译完成了,这里会显示出所有apk中的代码,包括lib中依赖的jar包,注意,混淆过的包名方法名可能是abc什么的