在此儲存庫中,我們將找到有關如何對 APK 進行逆向工程的逐步指南。
逆向工程可以在幾個方面幫助我們,例如識別惡意軟體或程式碼、發現安全缺陷、發現未預期的功能/違反業務規則……也就是說,讓我們更深入地了解 Android 世界。
從基礎開始,我們可以將 Android 套件 (APK) 分為幾個部分:
Smali 是 Dalvik 字節碼的人類可讀版本,簡單地說,它的工作原理是彙編/反彙編。 Dalvik 可執行格式 (.dex)
程式碼方面,我們來看看Java和Smali的差別:
public static void printHelloWorld() {
System.out.println("Hello World")
}
和我們在 Smali 中的相同代碼:
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World"
invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
我們已經了解了必要的基本概念,現在就開始工作吧!
步驟一:
選擇您要逆向的 APK。
如果您無法透過應用程式商店輕鬆找到它,您可以直接在 APKCombo 或 APKMonk 等網站上找到它。
到達這裡後,請注意一些可能有趣的事情:
- Qual é o URL da API? (geralmente emos algo como api.domain.com)
- Qual é método de autenticação utilizado? Eu preciso criar um login para acessar?
- Quais são as chamadas que eu posso encontrar e quais são os parâmetros eles esperam?
一旦我們有了APK,就可以對其進行反編譯,以便我們可以分析程式碼。
(MOBSF 等動態分析工具可讓您直接下載程式碼,無論是 Java 還是 SMALI)。
現在我們將使用工具,第一個是 APKTOOL,您將在下面看到有關它的更多詳細信息,但通常它將負責反編譯文件,在同一位置創建一個文件夾,其中包含所有反編譯文件。從這裡,您將能夠分析所有必要的程式碼。
這裡使用的命令如下:
- apktool d ~/Desktop/aplicativo_app.apk
從 APK 中提取“classes.dex”檔案。
使用dex2jar工具轉換為Java類別檔案。產生一個 jar 檔案。
- sh d2j-dex2jar.sh classes.dex
使用JD-GUI從jar檔中提取原始碼。
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
行動安全框架是一個自動 APK 分析的工具。在其中,我們獲得了有關構成 APK 的部分的更多詳細信息,我們之前已經看到過。
dex2jar
德克斯
apk工具
apktool 是一個開源 Java 工具,用於對 Android 應用程式進行逆向工程。它可以將 APK 檔案解碼為人類可讀的 XML 格式的原始程式碼。也將文件中包含的所有類別和方法劃分為Smali。這樣,您就可以修改功能或程式執行。使用 Smali 程式碼,您可以在該應用程式中新增功能或更改預期行為。
常用於 SSL 固定。
adb(Android 調試橋)
男性衛士
Xpose框架
命令: //很快
繞過 Android SSL
芙烈達
現在我們已經了解了其工作原理,是時候練習了!以下是一些可以用作練習的實驗清單:
測試以下攻擊類型:
感謝您來到這裡!祝你今天過得愉快。