27款优秀的Android逆向工程工具
工欲善其事必先利其器,好的Android逆向工程工具在逆向破解工程中起到事半功倍的作用。
1. SMALI/BAKSMALI
SMALI/BAKSMALI是一個強大的apk文件編輯工具,用于Dalvik虛擬機(Google公司自己設(shè)計用于Android平臺的虛擬機)來反編譯和回編譯classes.dex。其語法是一種寬松式的Jasmin/dedexer語法,而且它實現(xiàn)了.dex格式所有功能(注解,調(diào)試信息,線路信息等)。
下載地址:傳送門
2. ANDBUG
Andbug是一款針對Android平臺的Dalvik虛擬機的調(diào)試工具,工具基于jdwp協(xié)議,使用了python封裝,其靈活性和可定制性對逆向工程師和開發(fā)人員而言可謂是神器級別的安卓安全工具。它與Android的Eclipse插件調(diào)試使用相同的接口,其Java 調(diào)試線協(xié)議(JDWP)和Dalvik調(diào)試監(jiān)視器(DDM)允許用戶監(jiān)視Dalvik虛擬機,檢查進程狀態(tài)。
不同于谷歌自己的Android軟件開發(fā)工具包調(diào)試工具,AndBug不要求源代碼。但是,它需要使用python封裝,因為對于大多數(shù)重要的任務(wù),它需要使用一個腳本斷點(scripted breakpoints)的概念,稱為“hooks”。
下載地址:傳送門
3. ANDROGUARD
androguard (也稱Android guard) 是 Android 應(yīng)用程序的逆向工程,提供惡意軟件分析等功能。其特征為:
使用DAD作為反編譯器;
可以分析惡意軟件;
主要由Python 編寫;
支持可視化;
androguard 支持:
DEX, ODEX;
APK;
Android的二進制XML;
Android資源文件;
分解的DEX/ODEX 字節(jié);
DEX/ODEX 文件反編譯程序;
下載地址:傳送門
4. APKTOOL
APKTool是GOOGLE提供的APK編譯工具,能夠反編譯及回編譯apk,同時安裝反編譯系統(tǒng)apk所需要的framework-res框架,清理上次反編譯文件夾等功能。它可以完整解包APK,解包后你可以看到 APK 里面的聲明文件、布局文件、圖片資源文件、由 dex 解包出來的 smali 文件、語言文件等。如果你要漢化、修改界面、修改代碼的話,apktool 可以幫你一站式完成。
特征:
反編譯資源文件到原始格式(包括resources.arsc,classes.dex,9.png以及XML等);
將解碼資源重建回二進制APK / JAR;
組織和處理依賴于框架資源的APK;
Smali調(diào)試(2.1.0中移除,被IdeaSmali取代);
協(xié)助重復(fù)性任務(wù);
下載地址:傳送門
5. AFE
AFE(Android Frameworkfor Exploitation)是一個開源項目,運行在Unix-based 的操作系統(tǒng)中,能夠用來證明Android操作系統(tǒng)中存在安全漏洞,它還表明Android僵尸網(wǎng)絡(luò)是能夠存在的。使用AFE能夠非常容易的自動創(chuàng)建一個Android平臺的惡意軟件,發(fā)現(xiàn)應(yīng)用軟件的漏洞(例如Leaking Content Providers,Insecure FileStorage,Directory Traversal等),以及在受感染的設(shè)備上執(zhí)行任意命令。
AFE包含兩個部分,PC端(以下稱為AFE)和手機端(以下稱為AFEServer)。AFE大部分是完全使用Python編寫的。AFE是可擴展的,可以自由添加其他的模塊或者將已有的工具移植到AFE框架下。AFEServer是一個在手機上運行的Android應(yīng)用,用來和AFE的Python界面進行連接,執(zhí)行AFE發(fā)送到手機的命令。
功能:
完善的命令行界面;
發(fā)現(xiàn)應(yīng)用漏洞;
自動化創(chuàng)建惡意應(yīng)用;
下載地址:傳送門
6. BYPASS SIGNATURE AND PERMISSION CHECKS FORIPCS
該工具通過使用Cydia Substrate為IPCs提供繞過簽名和權(quán)限檢查服務(wù)。
關(guān)于Cydia Substrate
Cydia Substrate是一個代碼修改平臺。它可以修改任何主進程的代碼,不管是用Java還是C/C++(native代碼)編寫的。
下載地址:傳送門
7. ANDROID OPENDEBUG
該工具利用Cydia Substrate將所有的應(yīng)用程序在設(shè)備上運行;一旦安裝任意應(yīng)用程序就會有一個debugger連接到它們。
注意:該工具只能在測試設(shè)備中使用!
下載地址:傳送門
8. DARE
Dare是賓州大學計算機系發(fā)布的apk逆向工程工具,可以將Android系統(tǒng)中使用的apk文件反編譯為JavaClass文件,這些Class文件隨后可以通過現(xiàn)有的Java工具(包括反編譯)進行處理。目前支持Linux和Mac OS X中使用。
下載地址:傳送門
9. DEX2JAR
dex2jar是一個能操作Android的dalvik(.dex)文件格式和Java的(.class)的工具集合。包含以下幾個功能
dex-reader/writer:用于讀寫 DalvikExecutable (.dex) 文件格式. 包含一個簡單的API(與ASM相似);
d2j-dex2jar:執(zhí)行dex到class的文件格式轉(zhuǎn)換;
smali/baksmali:與smali工具功能一致,但是對中文更友好;
其他工具:字符串解密
下載地址:傳送門
10. ENJARIFY
Enjarify是由Google推出的一款基于Python3開發(fā),類似dex2jar的反編譯工具,它可以將Dalvik字節(jié)碼轉(zhuǎn)換成相對應(yīng)的Java字節(jié)碼,有比dex2jar更優(yōu)秀的兼容性,準確性及更高的效率。
下載地址:傳送門
11. DEDEXER
Dedexer是一款反編譯dex文件的開源工具。特征包含:
不需要在android模擬器中運行;
能夠?qū)ex文件按照java源代碼package的目錄結(jié)構(gòu)建好了目錄,每個class文件對應(yīng)一個ddx文件;
可作為像jasmin一樣的反編譯引擎;
下載地址:傳送門
12. FINO
一款A(yù)ndroid動態(tài)分析工具。
下載地址:傳送門
13. INDROID
該項目的目的是證實在nix 系統(tǒng)a.k.a ptrace函數(shù)上的一個簡單的調(diào)試功能可以被惡意軟件濫用,在遠程進程中注入惡意代碼。Indroid為基于ARM的 nix設(shè)備提供創(chuàng)建遠程線程(CreateRemoteThread)。
如果你想更深入地了解該框架,可以點擊如下鏈接:
觀看Defcon 19相關(guān)視頻:傳送門
查看報告詳情:傳送門
CreateRemoteThread是創(chuàng)建一個在其它進程地址空間中運行的線程(也稱創(chuàng)建遠程線程)。
14. INTENT SNIFFER
Intent Sniffer工具可以在任何運行谷歌Android操作系統(tǒng)的設(shè)備上使用。在Android平臺中,Intent是應(yīng)用程序之間進行通信的最常用的方式之一,Intent Sniffer工具實現(xiàn)監(jiān)控運行時路由的廣播Intent,也就是在系統(tǒng)上的應(yīng)用程序之間發(fā)送的Intent。它并不監(jiān)控顯式廣播的Intent,而是默認為(大多數(shù)情況下)無優(yōu)先權(quán)的廣播。
該工具也能夠針對那些基于應(yīng)用反射和動態(tài)審查安裝程序的Intent來動態(tài)升級掃描的Action和Category。
下載地址:傳送門
15. INTROSPY
Introspy是一款黑盒測試工具,幫助我們理解Android應(yīng)用程序在運行時的行為,協(xié)助我們識別潛在的安全問題。
下載地址:傳送門
16. JAD
JAD是一款Java反編譯工具,可以通過命令行把Java的class文件反編譯成源代碼。
下載地址:傳送門
17. JD-GUI
JD-GUI是一個獨立的顯示“.class” 文件Java源代碼的圖形用戶界面工具。用戶可以使用JD-GUI瀏覽和重建源代碼的即時訪問方法和字段,以代碼高度方式來顯示反編譯過來的代碼。
下載地址:傳送門
18. CFR
CFR(Class File Reader),Java反編譯器,支持Java 8的lamda表達式,Java 7 的字符串轉(zhuǎn)換等,開發(fā)者為LeeBenfield。
下載地址:傳送門
19. KRAKATAU
Krakatau開發(fā)者為Storyyeller,目前主要包含三個工具——java類文件的反編譯和反匯編工具,創(chuàng)建類文件的匯編工具。
下載地址:傳送門
20. PROCYON
Java反編譯器和元編程框架Procyon可以在反編譯工具中立足,顯然是具有其獨到優(yōu)勢的。它有進行控制流分析,以及類型推斷,也支持java8特性,其開發(fā)者為Mike Strobel。
下載地址:傳送門
21. FERNFLOWER
Fernflower是一個對Java程序進行反編譯分析的利器。目前正處于開發(fā)階段,如有bug報告和改進建議可發(fā)送郵件至fernflower.decompiler@gmail.com
下載地址:傳送門
22. REDEXER
Redexer是Dalvik 字節(jié)碼(用于安卓APP)分析框架,它是一套基于OCaml的實用工具,幫助程序員解析,操作Dalvik虛擬機。Redexer由來自馬里蘭大學帕克分校的PLUM組織開發(fā)完成,主要作者是:Jinseong Jeon,Kristopher Micinski以及Jeff Foster。
關(guān)于OCaml
OCaml是Caml編程語言的主要實現(xiàn),由XavierLeroy,Jérme Vouillon,Damien Doligez,Didier Rémy及其他人于1996年創(chuàng)立。
下載地址:傳送門
23. SIMPLIFY安卓反混淆工具
Simplify安卓反混淆工具實際上是通過執(zhí)行一個APP來解讀其行為,隨后嘗試通過優(yōu)化代碼來實現(xiàn)行為一致,但是更容易被人理解的目的。每一種優(yōu)化類型都是非常簡單通用的,所以無論用的是什么特殊類型的混淆技術(shù)都沒關(guān)系。其主要由3部分組成:smalivm,simplify以及demo app。
下載地址:傳送門
24. BYTECODE VIEWER
Bytecode Viewer是一個高級的輕量級Java字節(jié)碼查看器,GUIProcyon Java 反編譯器, GUI CFR Java 反編譯器, GUI FernFlower Java 反編譯器, GUI Jar-Jar, Hex 查器看, 代碼搜索器, 調(diào)試器等。
這款開源工具完全采用Java編程語言進行開發(fā)。這款工具由Konloch設(shè)計并開發(fā),目前也主要是Konloch正在維護這一開源項目。
在這款工具中,還設(shè)計有一個插件系統(tǒng),它可以允許你與加載的類文件進行交互。比如說,你可以寫一個字符串的反混淆工具,惡意代碼搜索器,或者其他的一些你所能想到的東西。
你不僅可以使用一個他人預(yù)先編寫完成的插件,而且你也可以使用你自己寫的插件。不僅如此,它還支持使用Groovy腳本,Python腳本,以及Ruby腳本。當插件狀態(tài)被激活之后,它會將每一個單獨的類文件加載進BCV中,這樣一來,用戶就可以使用ASM來控制這些加載的類文件了。
下載地址:傳送門
25. RADARE2
radare2是一款開放源代碼的逆向工程平臺,它可以反匯編、調(diào)試、分析和操作二進制文件。
主要特點:
多平臺多架構(gòu)的;
高度腳本;
十六進制編輯器;
IO包裹;
文件系統(tǒng)支持;
調(diào)試器支持等;
下載地址:傳送門
26. JEB FOR ANDROID
JEB是一個功能強大的為安全專業(yè)人士設(shè)計的Android應(yīng)用程序的反編譯工具。用于逆向工程或?qū)徲婣PK文件,可以提高效率減少許多工程師的分析時間。
特征表現(xiàn)為:
全面的Dalvik反編譯器;
交互性;
可全面測試APK文件內(nèi)容;
多平臺(支持Windows, Linux和Mac等操作系統(tǒng))
官網(wǎng)地址:傳送門
下載地址:傳送門
27、FakerAndroid
簡介
- 直接將Apk文件轉(zhuǎn)換為可以進行二次開發(fā)的Android項目的工具,支持so hook,對于il2cpp的游戲apk直接生成il2cpp c++腳手架
- 將痛苦的逆向環(huán)境,轉(zhuǎn)化為舒服的開發(fā)環(huán)境,告別匯編,告別二進制,還有啥好說的~~
特點
- 基于AndroidStudio進行smali修改編譯
- 提供Java層代碼覆蓋及繼承替換的腳手架
- 提供so函數(shù)Hook Api
- 對于il2cpp的游戲apk直接生成il2cpp c++腳手架
- Java層標準的對原有Java api的AndroidStudio編碼提示
- Debug知道直接定位為到Java偽代碼
- 對于il2cpp的游戲apk,標準的Jni對原有il2cpp腳本的編碼提示
- 無限的可能性和擴展性,能干啥你說了算~
運行環(huán)境
- Java
- il2cpp游戲Apk,非windows暫時無法生成il2cpp c++腳手架
使用方式
- 下載FakerAndroid.jar(2020/10/28/17:15:00)
- cmd命令行?cd <FakerAndroid.jar平級目錄>
- cmd命令行?java -jar FakerAndroid.jar fk <apkpath>?(項目生成路徑與apk文件平級) 或?java -jar FakerAndroid.jar fk <apkpath> -o <outdir>
- 例:java -jar FakerAndroid.jar fk D:\apk\test.apk?或?java -jar FakerAndroid.jar fk D:\apk\test.apk -o D:\test
生成的Android項目二次開發(fā)教程
1、打開項目
- Android studio直接打開工具生成的Android項目
- 保持跟目錄build.gradle中com.android.tools.build:gradle:3.4.0依賴固定,請勿升級或修改該版本號,且項目配置NDk版本為21
- 存在已知缺陷,res下的部分資源文件編譯不過,需要手動修復(fù)一下,部分Manifest標簽無法編譯需要手動修復(fù)
2、調(diào)試運行項目
- 連接測試機機
- Run項目(提醒:DEX緩存原因,修改smali文件后調(diào)試運行需要先卸載手機調(diào)試包,另外il2cpp game apk 第一次編譯腳手架會比較慢)
3、進階
- 類調(diào)用
借助javaScaffoding 在主模塊(app/src/main/java)編寫java代碼對smali代碼進行調(diào)用 - 類替換
在主模塊(app/src/main/java)直接編寫Java類,類名與要替換的類的smali文件路徑對應(yīng) - So Hook
借助FakeCpp 使用jni對so函數(shù)進行hook替換 - il2cpp unity游戲腳本二次開發(fā)
借助il2cpp Scaffolding 和FakeCpp,使用jni對原il2cpp游戲腳本進行Hook調(diào)用
生命不息,奮斗不止,人無再少年!
總結(jié)
以上是生活随笔為你收集整理的27款优秀的Android逆向工程工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恢复IE8自带的源代码查看器
- 下一篇: s5pv210——按键