在网上找了很多的反编译工具,各个工具并不是完全能编译成功,东拼西凑了很多,总结一下。
1、jadx 下载地址:https://github.com/skylot/jadx/
反编译功能强大,支持的反编译文件类型较多,apk、dex、jar、class、zip、aar等文件进行反编译都可以。jadx操作方便,图形化界面,下载后解压打开导入apk文件即可,无需其它设置。但是它是我目前使用过的最慢的反编译工具,电脑配置不行的不建议使用,卡!
以下是反编译了一个apk,能获取源码和资源布局文件,部分dex文件获取不到,可以用dex2jar工具将dex文件反编译成jar文件,再配合jd-gui工具反编译Jar文件,就可以获取到源码了!
2、apktool
支持Android apk反编译,能从apk中提取图片和布局资源,源码不能获取。尝试用dex2jar工具将可运行文件classes.dex反编译为jar源码文件。最后再配合jd-gui查看java源码。
使用方法:下载apktool后,打开cmd, 进入到apktool_x.x.x.jar文件目录。
反编译:Java -jar apktool_xx.jar d -f 编译的apk [-o 反编译后的apk]
//[]括号为可选参数,apktool_xx.jar中的xx对应自己下载工具的版本号。
回编译:Java -jar apktool_xx.jar b 反编译后的apk -o 回编译后生成的apk路径
获取源码需要先把apk文件变成zip文件,然后再解压,这里的资源文件是乱码。主要是为了获取到dex文件,如果有的apk有库文件(.so)可以通过这种方式获取。
下载dex2jar
将dex转换成jar文件
下载jd-gui
反编译jar源码文件,jd-gui也可以反编译class字节码文件,直接下载解压导入jar文件运行即可获取源码。
除此之外,jd-gun它支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse的插件JD-Eclipse、IntelliJ的插件JD-IntelliJ。
apk签名:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件路径 -signedjar 签名后的apk路径 签名的apk路径 签名文件名称
生成R文件:aapt package -m -J 生成R文件的路径 -S apk中的res的路径 -I adt中android.jar路径 -M AndroidManifest.xml路径
参考链接:
https://blog.csdn.net/yannqi/article/details/80847354
https://blog.csdn.net/u012811342/article/details/72934477
https://blog.csdn.net/dreamer2020/article/details/52761606
https://blog.csdn.net/guolin_blog/article/details/49738023