java反编译工具_Android APP 取证之逆向工具篇
一、前言
此系列文章將針對(duì) Android APP 取證領(lǐng)域展開討論。在國內(nèi),由于最近幾年國產(chǎn)手機(jī)廠商之間的競爭和努力,如今 Android 平臺(tái)的使用數(shù)量和廣度,已經(jīng)遠(yuǎn)超蘋果的 iOS 了。如今 Android 的生態(tài)環(huán)境已經(jīng)變得相當(dāng)良好和成熟,廣大老百姓的衣食住行也早已融入其中。故而,Androd的眾多 APP 里蘊(yùn)含著海量的廣大用戶的數(shù)據(jù)。但是其中也滋生了很多黑色產(chǎn)業(yè)的鏈條,竊取著用戶信息,損害者用戶利益。無論是從有效數(shù)據(jù)的豐富性角度,還是從黑產(chǎn) APP 惡意分析和溯源分析的角度,Android APP 取證顯得愈發(fā)重要起來。我們先從介紹 APP 逆向工程介紹開始,今天先看下有哪些 APP 逆向工具。
二、逆向工具介紹
IDA
IDA PRO 這是一款強(qiáng)大的反編譯工具,和逆向打交道的人應(yīng)該都有所耳聞。IDA 會(huì)對(duì)可識(shí)別的文件進(jìn)行代碼反編譯,反編譯過程依據(jù)文件大小而定,例如:幾百 KB 大小的文件,IDA 可短時(shí)間分析完畢;更大文件,IDA則自動(dòng)分析一段時(shí)間,越大的文件 IDA 分析的時(shí)間通常會(huì)越長(因?yàn)榭蓤?zhí)行文件越大,意味著可執(zhí)行文件中代碼段也越大,IDA 分析時(shí)間自然會(huì)越長)。IDA軟件會(huì)利用回歸方式遞進(jìn)分析可執(zhí)行文件反匯編代碼。
它可以運(yùn)用于反匯編 Android 系統(tǒng)的內(nèi)核鏡像和 native 層的動(dòng)態(tài)鏈接 .so 文件等。
下載地址:https://www.hex-rays.com/products/ida/
JEB
JEB是一款功能強(qiáng)大的為安全專業(yè)人士設(shè)計(jì)的 Android 應(yīng)用程序的反編譯工具。用于逆向工程或?qū)徲?jì)APK文件,可以提高效率減少許多工程師的分析時(shí)間。JEB 的獨(dú)特功能是,其 Dalvik 字節(jié)碼反編譯為 Java 源代碼的能力,無需 DEX-JAR 轉(zhuǎn)換工具。當(dāng)處理混淆的或受保護(hù)的代碼塊時(shí),JEB 擁有強(qiáng)大的用戶界面,可以檢查交叉引用,重命名的方法,字段,類,代碼和數(shù)據(jù)之間導(dǎo)航,做筆記,添加注釋,以及更多。使用Java或Python,用戶可以編寫自己的腳本和插件來自動(dòng)執(zhí)行逆向工程流程。
下載地址:https://www.pnfsoftware.com/
JADX
JADX同樣是一款功能非常的強(qiáng)大的 Android 應(yīng)用程序反編譯的工具。它的優(yōu)點(diǎn)在于擁有圖形化的界面、拖拽式的操作、直接反編譯輸出 Java 代碼、可以導(dǎo)出 Gradle 工程等。JADX 提供的搜索功能,非常強(qiáng)大,而且搜索速度也不慢。它支持四種維度的搜索,Class、Method、Field、Code,可以根據(jù)所需的內(nèi)容進(jìn)行勾選,范圍最大的就是 Code ,基本上就是文本匹配搜索。但是,JADX 反編譯一些小的 APK ,一點(diǎn)壓力都沒有,對(duì)于一些比較重的 APK,一般大于 50MB 時(shí),就可能遇到使用 JADX 反編譯的時(shí)候卡死的問題。
下載地址:https://github.com/skylot/jadx
Smali/Baksmali
SMALI/BAKSMALI 這是一款強(qiáng)大的 apk 文件編輯工具。眾所周知,Android虛擬機(jī)的可執(zhí)行文件并不是普通的 class 文件,而是再重新整合打包后生成的 dex 文件。dex 文件反編譯之后就是 Smali 代碼,所以說,Smali 語言是 Android 虛擬機(jī)的反匯編語言。SMALI/BAKSMALI 通過修改 Smali 代碼,更改了 APK 運(yùn)行邏輯,可以反編譯和重新編譯 classes.dex 文件,同時(shí)它也實(shí)現(xiàn)了 dex 格式所有功能,例如調(diào)試信息,線路信息等。
然而,它是一款沒有圖形界面的命令行工具:
下載地址:https://bitbucket.org/JesusFreke/smali/downloads/
Adb
ADB,即 Android Debug Bridge,它是 Android 開發(fā)/測試人員不可替代的強(qiáng)大工具。ADB 是一種功能多樣的命令行工具,可以在電腦端與設(shè)備進(jìn)行通信。ADB 命令可用于執(zhí)行各種設(shè)備操作,例如安裝和調(diào)試應(yīng)用,具有良好的拓展性,提供對(duì) Unix shell(可用來在設(shè)備上運(yùn)行各種命令)的訪問權(quán)限。它是一種客戶端-服務(wù)器程序,包括以下三個(gè)組件:
1. ?? 客戶端:用于發(fā)送命令??蛻舳嗽陂_發(fā)計(jì)算機(jī)上運(yùn)行。您可以通過發(fā)出 ADB 命令來從命令行終端調(diào)用客戶端。
2. ?? 守護(hù)進(jìn)程 :在設(shè)備上運(yùn)行命令。守護(hù)進(jìn)程在每個(gè)設(shè)備上作為后臺(tái)進(jìn)程運(yùn)行。
3. ?? 服務(wù)器:管理客戶端和守護(hù)進(jìn)程之間的通信。服務(wù)器在開發(fā)機(jī)器上作為后臺(tái)進(jìn)程運(yùn)行。
當(dāng)啟動(dòng)某個(gè) ADB 客戶端時(shí),客戶端會(huì)先檢查是否有 ADB 服務(wù)器進(jìn)程正在運(yùn)行。如果沒有,它將啟動(dòng)服務(wù)器進(jìn)程。服務(wù)器在啟動(dòng)后會(huì)與本地 TCP 端口 5037 綁定,并監(jiān)聽 ADB 客戶端發(fā)出的命令 - 所有 ADB 客戶端均通過端口 5037 與 ADB 服務(wù)器通信。
下載地址:https://developer.android.com/studio/releases/platform-tools
Apktool
APKTool 是谷歌提供的 APK 編譯工具,能夠反編譯及回編譯 apk。而且它安裝反編譯系統(tǒng) apk 所需要的 framework-res 框架,清理上次反編譯文件夾等功能。它可以完整解包APK,解包后你可以看到 APK 里面的聲明文件、布局文件、圖片資源文件、由 dex 解包出來的 smali 文件、語言文件等。APKTool也 可以幫助完成漢化、修改界面、修改代碼的等任務(wù)。
下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads/
AndroidKiller
AndroidKiller是一款可視化的安卓應(yīng)用逆向工具,集APK反編譯、APK打包、APK簽名,編碼互轉(zhuǎn),ADB通信(應(yīng)用安裝-卸載-運(yùn)行-設(shè)備文件管理)等特色功能于一身,支持logcat日志輸出,語法高亮,基于關(guān)鍵字(支持單行代碼或多行代碼段)項(xiàng)目內(nèi)搜索,可自定義外部工具;吸收融匯多種工具功能與特點(diǎn),打造一站式逆向工具操作體驗(yàn),大大簡化了安卓應(yīng)用/游戲修改過程中各類繁瑣工作。同時(shí)還可以用于漢化 app,因?yàn)槟承﹪鈇pp沒有中文,所以有人專門做漢化app,AndroidKiller就是漢化的利器。
下載地址:https://www.52pojie.cn/thread-319641-1-1.html
Gdb
GDB是一個(gè)由GNU開源組織發(fā)布的、UNIX/LINUX操作系統(tǒng)下的、基于命令行的、功能強(qiáng)大的程序調(diào)試工具。對(duì)于一名Linux下工作的c++程序員,gdb是必不可少的工具。如果你的程序是一個(gè)服務(wù)程序,那么你可以指定這個(gè)服務(wù)程序運(yùn)行時(shí)的進(jìn)程ID。gdb會(huì)自動(dòng)attach上去,并調(diào)試他。program應(yīng)該在PATH環(huán)境變量中搜索得到。
下載地址:https://www.gnu.org/software/gdb/
Ndk-gdb
為了調(diào)試android native程序,谷歌推出了 NDK-gdb 工具使用。在手機(jī)上啟動(dòng)安裝的程序,準(zhǔn)備讓 ndk-gdb 掛接。注意:手機(jī)需要root,否則ndk-gdb可能沒有相關(guān)權(quán)限啟動(dòng)gdbserver。進(jìn)入工程目錄,執(zhí)行 $NDK_PATH/NDK-gdb 。它會(huì)分析當(dāng)前目錄下的AndroidManifest.xml文件,提取包名,并且判斷是否是 debuggable 模式,然后自動(dòng)連接包名對(duì)應(yīng)的程序上。如果啟動(dòng)成功,程序會(huì)被中斷,在控制臺(tái)上就可以輸入 gdb 的命令了。
下載地址:https://developer.android.com/ndk/downloads
Janus
Janus 由盤古團(tuán)隊(duì)研發(fā),里面除了惡意代碼檢測、APP 漏洞分析、大數(shù)據(jù) APP 行為監(jiān)控等功能外,還集成了深度掃描后的交互式逆向分析環(huán)境。而且,很多時(shí)候彌補(bǔ)了 JEB 和 jadx 的反編譯部分失敗的不足之處。最近,Janus 相關(guān)能力也融合進(jìn)了盤古石的 APP 取證服務(wù)平臺(tái)。
其他工具
其實(shí)Android APP 相關(guān)的逆向工具還有很多,比如 GDA 和 Smali2Java 等優(yōu)秀的工具,這里不再一一列舉。上面諸多的優(yōu)秀工具已經(jīng)能滿足很多的逆向場景了。
“盤古石”團(tuán)隊(duì)是奇安信科技集團(tuán)股份有限公司旗下專注于電子數(shù)據(jù)取證技術(shù)研發(fā)的團(tuán)隊(duì),由來自國內(nèi)最早從事電子數(shù)據(jù)取證的成員組成。盤古石團(tuán)隊(duì)以“安全為先,洞鑒未來”為使命,以“漏洞思維”解決電子數(shù)據(jù)取證難題,以“數(shù)據(jù)驅(qū)動(dòng)安全”為技術(shù)思想,以安全賦能取證,研發(fā)新一代電子數(shù)據(jù)取證產(chǎn)品,產(chǎn)品涵蓋計(jì)算機(jī)取證、移動(dòng)終端取證、網(wǎng)絡(luò)空間取證、IoT取證、取證數(shù)據(jù)分析平臺(tái)等電子數(shù)據(jù)取證全領(lǐng)域產(chǎn)品和解決方案,為包括公安執(zhí)法、黨政機(jī)關(guān)、司法機(jī)關(guān)以及行政執(zhí)法部門等提供全面專業(yè)的支持與服務(wù)。總結(jié)
以上是生活随笔為你收集整理的java反编译工具_Android APP 取证之逆向工具篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一次解析系统_消防稳压泵的流量、压力、选
- 下一篇: 电脑word在哪_新的电脑应该安装哪些软