apktool
下载地址
下载地址 : https://ibotpeaches.github.io/Apktool/
使用方法
反编译成smali
$ java -jar apktool_2.3.4.jar d demo.apk
I: Using Apktool 2.3.4 on demo.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
S: WARNING: Could not write to (/Users/wujiabo/Library/apktool/framework), using /var/folders/pd/1qwx8_fd2wvgtpklyxb6qjvm0000gn/T/ instead...
S: Please be aware this is a volatile directory and frameworks could go missing, please utilize --frame-path if the default storage directory is unavailable
I: Loading resource table from file: /var/folders/pd/1qwx8_fd2wvgtpklyxb6qjvm0000gn/T/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
默认生成以apk名称命令的文件夹
重打包命令
java -jar apktool_2.3.4.jar b demo
漏洞
构造恶意的AndroidManifest.xml,重打包即可造成xxe攻击
java -jar apktool_2.2.2.jar b demo/ -o demoxxe.apk
影响版本
1.5.2-2.2.4
还有个目录穿越漏洞,详情可以看https://security.tencent.com/index.php/blog/msg/122?from=timeline&isappinstalled=0
baksmali/smali
下载地址
下载地址 : https://bitbucket.org/JesusFreke/smali/downloads/
使用方法
反编译成smali,实际上apktool用的反编译成smali就是用的这个工具
java -jar baksmali-2.2.2.jar disassemble demo.apk -o demo_baksmali
重打包成dex
java -jar smali-2.2.2.jar assemble demo
dex2jar
下载地址
下载地址 : https://github.com/pxb1988/dex2jar
使用方法
看这目录就知道很全全面了
把apk/dex文件反编译成smali语言
sh d2j-baksmali.sh demo.apk
重新签名dex文件
sh d2j-dex-recompute-checksum.sh demo.dex
把apk反编译成可读jar代码
sh d2j-dex2jar.sh demo.apk
注意,如果apk里面有多个dex,该工具只会反编译出一个,如果需要反编译dex文件,需从apk中扣出dex文件自行反编译
sh d2j-dex2jar.sh classes.dex
把dex反编译成smali文件
sh d2j-dex2smali.sh classes.dex
把jar文件打包成dex
sh d2j-jar2dex.sh classes-dex2jar.jar
jd-gui
下载地址
下载地址 : http://jd.benow.ca/
使用方法
直接打开用反编译工具反编译出来的jar文件
把所有java文件保存下来
jadx
下载地址
下载地址 : https://github.com/skylot/jadx
使用方法
直接打开apk即可
善用搜索
把整个工程保存在本地
jeb
下载地址
下载地址 : https://www.pnfsoftware.com/
使用方法
直接打开apk即可
按q反编译成jar代码
常规套路
首先看apk是否有壳,在无壳或者拖壳以后,用以上工具反编译成可读代码,然后阅读代码找敏感url、参数等,如果数据加密,也可以在java代码中寻找解密函数(不要一味的相信反编译出来的代码,没有一款工具能100
%正确),或者利用调试技术获取你想要的东西。
Android动态调试(一)动态调试Smali
Android动态调试(二)动态调试So
Android动态调试(三)Xposed hook