Zum Hauptinhalt springen

APK Extraction

Um das BLE-Protokoll zu verstehen, extrahieren wir die Companion-App vom Android-Gerät.

Methode 1: ADB (Android Debug Bridge)

# USB-Debugging aktivieren auf dem Smartphone
# Einstellungen → Über das Telefon → 7x auf Build-Nummer tippen
# Einstellungen → Entwickleroptionen → USB-Debugging aktivieren

# Gerät verbinden und prüfen
adb devices

# Package-Name finden
adb shell pm list packages | grep -i led
# Beispiel: package:wl.smartled

# APK-Pfad ermitteln
adb shell pm path wl.smartled
# Beispiel: package:/data/app/~~xxx==/wl.smartled-xxx==/base.apk

# APK herunterladen
adb pull /data/app/~~xxx==/wl.smartled-xxx==/base.apk smart_led.apk

Methode 2: Online APK-Mirror

Falls kein Gerät verfügbar:

  1. APKMirror.com
  2. APKPure.com
Vorsicht

Lade APKs nur von vertrauenswürdigen Quellen. Prüfe SHA256-Checksums.

Methode 3: Aus Google Play (Alternativer Weg)

# Mit gplaycli (erfordert Google-Konto)
pip install gplaycli
gplaycli -d wl.smartled

APK-Struktur

Nach dem Download:

smart_led.apk (eigentlich ein ZIP)
├── AndroidManifest.xml # App-Metadaten, Berechtigungen
├── classes.dex # Dalvik Bytecode (Java-Code)
├── classes2.dex # Weitere Klassen
├── lib/
│ ├── arm64-v8a/
│ │ └── libAES.so # Native Libraries!
│ └── armeabi-v7a/
│ └── libAES.so
├── res/ # Ressourcen
└── resources.arsc # Kompilierte Ressourcen

Wichtige Dateien identifizieren

# APK entpacken
unzip smart_led.apk -d smart_led_extracted/

# Native Libraries finden
find smart_led_extracted/ -name "*.so" -type f

# DEX-Dateien zählen
ls -la smart_led_extracted/*.dex

Split-APKs behandeln

Neuere Android-Versionen verwenden oft Split-APKs:

# Alle APK-Teile finden
adb shell pm path wl.smartled
# Zeigt möglicherweise mehrere Pfade

# Alle Teile herunterladen
adb pull /data/app/~~xxx==/wl.smartled-xxx==/base.apk
adb pull /data/app/~~xxx==/wl.smartled-xxx==/split_config.arm64_v8a.apk
adb pull /data/app/~~xxx==/wl.smartled-xxx==/split_config.de.apk

Nächster Schritt

Weiter zur JADX Decompilation.