In diesem Repository finden Sie eine Schritt-für-Schritt-Anleitung zum Reverse Engineering einer APK.
Reverse Engineering kann uns in mehreren Aspekten helfen, z. B. bei der Identifizierung schädlicher Software oder Codes , der Entdeckung von Sicherheitslücken , der Suche nach unerwarteten Funktionen /Verstößen gegen Geschäftsregeln ... Lassen Sie uns jedoch tiefer in das Android-Universum eintauchen.
Beginnend mit den Grundlagen können wir unser Android-Paket (APK) in einige Teile unterteilen:
Smali ist die für Menschen lesbare Version des Dalvik-Bytecodes, vereinfacht gesagt, es funktioniert wie ein Assembler/Disassembler. Ausführbares Dalvik-Format (.dex)
Schauen wir uns in Bezug auf den Code den Unterschied zwischen Java und Smali an:
public static void printHelloWorld() {
System.out.println("Hello World")
}
Und unser gleicher Code in 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
Wir haben die notwendigen Grundkonzepte durchgearbeitet und machen uns nun an die Arbeit!
Schritt 1:
Wählen Sie die APK aus, die Sie umkehren möchten.
Wenn Sie es nicht einfach über den App Store selbst finden können, können Sie dies direkt auf Websites wie APKCombo oder APKMonk tun.
Achten Sie hier auf einige Dinge, die interessant sein könnten:
- 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?
Sobald wir das APK haben, ist es an der Zeit, es zu dekompilieren, damit wir den Code analysieren können.
(Mit dynamischen Analysetools wie MOBSF können Sie den Code direkt herunterladen, egal ob in Java oder SMALI).
Jetzt werden wir Tools verwenden, das erste davon ist APKTOOL. Weitere Details dazu finden Sie weiter unten. Im Allgemeinen ist es jedoch für die Dekompilierung der Dateien verantwortlich und erstellt an derselben Stelle einen Ordner mit allen dekompilierten Dateien . Von hier aus können Sie alle notwendigen Codes analysieren.
Der hier verwendete Befehl lautet wie folgt:
- apktool d ~/Desktop/aplicativo_app.apk
Extrahieren der Datei „classes.dex“ aus der APK.
Verwenden Sie das Tool dex2jar zum Konvertieren in Java-Klassendateien. Das Ergebnis ist eine JAR-Datei.
- sh d2j-dex2jar.sh classes.dex
Verwenden Sie JD-GUI, um den Quellcode aus der JAR-Datei zu extrahieren.
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
Mobile Security Framework ist ein Tool, das die APK-Analyse automatisiert. Darin erhalten wir weitere Details zu den Teilen, aus denen APKs bestehen, die wir zuvor gesehen haben.
dex2jar
dedexer
apktool
apktool ist ein Open-Source-Java-Tool für das Reverse Engineering von Android-Anwendungen. Es kann APK-Dateien in ihren Originalcode in einem für Menschen lesbaren XML dekodieren. Unterteilen Sie außerdem alle in der Datei enthaltenen Klassen und Methoden in Smali. Auf diese Weise können Sie Funktionen oder Programmausführungen ändern. Mithilfe von Smali-Code können Sie dieser Anwendung neue Funktionen hinzufügen oder das erwartete Verhalten ändern.
Wird häufig für SSL-Pinning verwendet.
adb (Android Debug Bridge)
androguard
Xposed-Framework
Befehle: //bald
Umgehen Sie Android SSL
Frida
Da wir nun wissen, wie das funktioniert, ist es Zeit zu üben! Hier ist eine Liste einiger Labore, die Sie als Übung verwenden können:
Testen Sie die folgenden Angriffstypen:
Vielen Dank, dass Sie hierher gekommen sind! Einen schönen Tag noch.