Thumbnail: thi

Advent Projekt - THI App Reboot Pt. 3

von am unter blog
4 Minuten TTR (Time To Read)

Disclamer

Ich möchte niemanden beleidigen, und falls das so rüber kommt tut es mir leid. Ziel ist es den Code/die Anwendung anzuschauen und erklären wie man wo was besser machen hätte können.

Einführung

Über die Adventszeit möchte ich die THI App rebooten, heute gibt es Pt. 3 des Projekts.
Heute müssen wir die App etwas Manipulieren, damit wir Morgen endlich die WebAPI anschauen können.
Da ich heute etwas wenig Zeit habe nur ganz wenig…

Vorgehensweise

  1. Entpacktes Manifest verändern
  2. APK neu packen
  3. APK Signieren

Manifest verändern

Seit längeren will Android dass wir APPs explizit beibringen Unbekannte/User Zertifikate zu akzeptiren, deshalb müssen wir unsere entpackte APP etwas Manipulieren.
Im Android Context wird dies als “Network Security Configuration” bezeichnet, zum glück ist dies eine Standard einstellung welche wir in den Docs finden.

Zunächst muss der AndroidManifest.xml die folgende Security Configuration zugewiesen werden.

<application [...]
  android:networkSecurityConfig="@xml/network_security_config">

Es empfielt sich auch das package und den AppNamen android:label auszutauschen diese sind ebenfalls im application Node enthalten.

Das Package ändern wir um beide APPs paralell nutzen zu können, das Label zum leichteren identifizieren…

Wie man das Logo austauscht könnt ihr selber nachschauen (Liegen unter res\drawable*\ic_launcher.png).

Network Security Config

Jetzt habe wir gesagt lade bitte die network_security_config.xml als neue networkSecurityConfig der Anwendung.

Unsere network_security_config.xml schaut wie folgt aus und liegt im Ordner res/xml (gegebenenfalls erstellen)

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="user"/>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>

Hier sagen wir unserer App dass sie bitte alle User und System Zertifikate akzeptieren soll…
Wir können quasi unsere eigene CA verwenden und diese wird ohne Probleme akzeptiert.
Eventuell kennt das Problem ja jemand wenn er SelfSigned Zertifikate schonmal ausgestellt hat. Wir können damit Zertifikate Signieren um so den Nervigen Dialog im browser zu unterbinden, wenn wir unsere CA auf dem Rechner Installieren.

So ist das auch bei Android, nur dass die App auch damit einverstanden sein muss.

APK neu Packen

Wir nehmen wieder das apktool von gestern Pt 2. Ich hatte mir nach dem entpacken eine Kopie thi-app_mod erstellt.

# APK neu Packen aus dem Überordner raus
apktool b thi-app_mod

Nun haben wir unsere neue APK im Ordner thi-app_mod/dist. Leider können wir diese nochnicht installieren, da sie nicht Signiert ist.

APK signieren

Beim signieren kommt einem JarSigner zur hilfe, es empfielt sich breits mal eine Android App erstellt zu haben, da man dann gleich einen Keystore hat… Ansonsten Dr Google befragen.

Das Passwort für den Store ist android

# APK signieren mit dem DebugKey von AndroidStudio
jarsigner -verbose -keystore ~/.android/debug.keystore ./thi-app_mod.apk androiddebugkey

Nun können wir die App auf unserem Handy installieren. z.B. mit abd

# APK installieren
adb install ./thi-app_mod.apk

Nächster Schritt

Man In The Middle Proxy

Schritte

  1. Einführung Pt 1
  2. Groben Überblick über die Anwendung verschaffen Pt 2
  3. REST Calls Analysieren
    1. App Vorbereiten Pt 3
    2. Man In The Middle Proxy Pt 4
  4. REST Bridge Basteln
    1. Überlegungen Pt 5
    2. Converter Basteln Pt 6
    3. Gap Gap
    4. JWT Clearify Pt 7
  5. Neues Projekt auf Github anlegen
  6. UI implementieren
  7. REST verknüpfen
android, analyze, reverseengineer, REST, thi