Android常用工具集合
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.shdemo.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
%正確),或者利用除錯技術獲取你想要的東西。