Sie sind auf Seite 1von 28

2021

MIB1 MIBRoot Patch


AM BEISPIEL DER FIRMWARE MHIG_EU_AU_K1549
_____________________________________________________
Inhaltsverzeichnis
1. Vorwort..............................................................................................................................................2
2. Optional: Firmware Update................................................................................................................3
2.1. Freischaltung des Engineering Mode mit VCDS...........................................................................3
2.2. Firmware-Update einspielen.......................................................................................................4
3. Vorbereitende Maßnahmen für den Patch.........................................................................................5
3.1. Benötigte Software für den Patch................................................................................................5
3.2. Installation Linux (unter Windows 10).........................................................................................5
3.3. Erzeugen eines Arbeitsverzeichnisses..........................................................................................6
3.4. Installation dumpifs.....................................................................................................................6
4. Zugang zur Konsole.............................................................................................................................7
4.1. Benötigte Utensilien....................................................................................................................7
4.2. Kennwörter Audi Europa.............................................................................................................7
4.3. Login Möglichkeiten auf der MIB.................................................................................................7
5. Backup/Dump MIB.............................................................................................................................8
6. Patchen MIBRoot................................................................................................................................9
6.1. Extrahieren der Datei MIBRoot....................................................................................................9
6.1.1. Extraktion der ifs-root-part2.ifs aus der Datei rcc_fs0........................................................9

6.1.2. Extraktion der Datei MIBRoot aus der Datei new.ifs........................................................11

6.2. MIBRoot patchen.......................................................................................................................14


6.3. Patch integrieren.......................................................................................................................22
7. Patch installieren..............................................................................................................................23
8. Anpassung FecContainer..................................................................................................................24
8.1. Liste mit FEC Codes....................................................................................................................24
8.2. FEC Code für Kartenunterstützung............................................................................................24
8.3. Erzeugung einer neuen FEC-Datei mit WhatTheFec..................................................................25
8.4. Kopieren der angepassten FEC-Datei auf die MIB.....................................................................26
9. Anpassung Steuergerät 5F................................................................................................................27

MIB1 MIBRoot Patch Seite 1 von 27


1 Vorwort

Diese Kurzanleitung beruht in weiten Teilen auf der wunderbaren Arbeit von den Autoren der
Dateien „AnleitungMIB2.pdf“ und „MIB2_Patch_DE_v0.7.pdf“, einige Informationen wurden
weggelassen und wenige wurden hinzugefügt. Die Credits gehen daher an die Autoren dieser
Dokumente!

Der Sinn dieses Dokuments ist das Aufzeigen der theoretischen Möglichkeit der Modifikation einer
Firmware zur Akzeptanz von erzeugten Feature Enabling Codes (FECs) ohne Signatur. Außer zu
Testzwecken ist daher von einem Einsatz abzusehen.

MIB1 MIBRoot Patch Seite 2 von 27


2 Optional: Firmware Update

Ob unbedingt ein Firmware-Update bei dem Fahrzeug durchgeführt werden sollte, dass muss jeder
selbst entscheiden. Grundsätzlich ist ein Backup der bestehenden Software für das Patchen der MIB
ausreichend.

2.1 Freischaltung des Engineering Mode mit VCDS

Dieser Schritt ist optional erforderlich, wenn der „Freundliche“ den Zugang zum Engineering Mode
bei einem Update auf „nicht aktiv“ gesetzt hat.

Die Tastenkombinationen, um in den Engineering Mode zu wechseln sind je nach Baujahr und
Fahrzeug unterschiedlich.

Beim Audi A3 8V Sportback Baujahr 2016 funktioniert es wie folgt:

- Wechsel in das Menü CAR (Menü-Taste drücken, auf Einstellung CAR gehen)
- Tastenkombination BACK + obere Linke Funktionstaste (neben dem Multi-Wheel) gleichzeitig
drücken.
- Nach einige Sekunden erscheint das sog. RED-Menü

Falls es nicht sofort funktioniert, dann mehrfach versuchen. Das gleichzeitige Drücken klappt nicht
immer sofort. Falls es jedoch überhaupt nicht funktioniert, dann muss via VCDS/VCP etc. der
Engineering Mode freigeschaltet werden.

Grundsätzlich befindet sich die gewünschte Einstellung im Steuergerät 5F. Allerdings ist im
Beispielfahrzeug der Parameter IDE02122 Developer Mode (Entwicklermodus) auf nicht aktiv. Der
Versuch diesen auf aktiv zu setzen wird mit einem Fehler (ungültiger Wert) quittiert. Unter
Zugriffsberechtigungen wird seitens VCDS kein Code angezeigt. Auch bei Eingabe der
Sicherheitsnummer „20103“, welche als gültig quittiert wird, ändert sich das Verhalten nicht.

Folgende Schritte sind einmalig notwendig, damit VCDS den Developer-Code anzeigt:
 Im STG 5F die VAG-Nummer merken (links oben). In meinem Fall „8V0 035 019“.
 Im Verzeichnis Labels (C:\Ross-Tech\VCDS-DRV\Labels) die Datei entsprechende Datei des
verbauten MMI suchen, in meinem Fall 8V0-035-MIB-HIGH1.clb. Die Datei duplizieren und in
den Namen des Steuergeräts umbenennen, also 8V0-035-019.clb.
 VCDS neustarten
 STG 5 anwählen, unter ZUGRIFFSBERECHTIGUNG 16 sollte nun der notwendige Code
erscheinen, in meinem Fall „S12345“

MIB1 MIBRoot Patch Seite 3 von 27


Folgende Codierung ist anzuwenden:

1 STG 5F (Informationselektronik) auswählen


2 Funktion ZUGRIFFSBERECHTIGUNG 16 auswählen, angezeigten Code eintragen
3 Funktion ANPASSUNG 10
4 Unter SUCHEN/FILTER nach dem Stichwort „Entwicklermodus“ eingeben
5 Unter ANPASSUNGSKANAL folgenden Punkt auswählen:
5.1 IDE02122: Entwicklermodus
6 Unter NEUER WERT das Stichwort „aktiv“ auswählen mit einem Klick auf den Übernehmen
Schaltknopf bestätigen.

2.2 Firmware-Update einspielen

Schritte zum Firmware-Update:

a SD-Karte mit Firmware-Image vorbereiten, sollte ungefähr wie folgt aussehen:

b Prüfung, ob die neue Version die aktuelle Firmware-Version unter „Supported Trains“
auflistet. Diese Information findet sich in der Datei metainfo2.txt.
c In den Engineering Mode wechseln
c.a Bei Audi A3 8V 2016: MENÜ – CAR – Tastenkombination BACK + oberste
Funktionstaste neben dem Steuerrad.
d Im Engineering Mode den Punkt Update auswählen und den Aufforderungen folgen
e Wenn das Update abgeschlossen ist, dann fragt das Setup nach den Rückspielen der neuen
Firmware-Informationen zum Herstellerserver. Diese Abfrage abbrechen.

MIB1 MIBRoot Patch Seite 4 von 27


3 Vorbereitende Maßnahmen für den Patch

3.1 Benötigte Software für den Patch

Betriebssystem: Windows 7 oder höher (kommerzielles Produkt)

Telnet: z.B. Putty https://www.putty.org/

Dumpifs: https://github.com/askac/dumpifs

Linux:

- virtuelles Linux oder vollwertige Installation auf der Hardware


- unter Windows 10: Microsoft Store: Ubuntu
Disassembler mit ARM Unterstützung (z.B. IDA Pro oder Ghidra):

- IDA Pro: https://www.hex-rays.com/products/ida/ (kommerzielles Produkt)


- Ghidra: https://ghidra-sre.org/

IFSTool: nicht frei erhältlich

WhatTheFec: nicht frei erhältlich

Hex-Editor: z.B. HxD https://mh-nexus.de/de/hxd/

XOR Rechner: http://mib-helper.com/im-so-xory/

VCDS/VCP oder ähnliche Tools für das Fehlerlöschen im Steuergerät 5F:

- VCDS: https://www.ross-tech.com/vag-com/ (kommerzielles Produkt)

3.2 Installation Linux (unter Windows 10)

Vorbemerkung: Dieser Schritt ist nicht notwendig, wenn mit dem Tool IFSTool.exe gearbeitet wird,
eine Firmware für das MIB zur Verfügung steht und kein Dump der rcc_fs0 als Grundlage dienen soll.
Empfehlenswerter ist es meiner Meinung nach aber mit einem Dump zu starten. Diese Informationen
stammen schließlich aus dem funktionsfähigen Fahrzeug.

Um mit dem Tool dumpifs arbeiten zu können, wird eine Linux-Umgebung benötigt. Windows 10
bietet mit dem Subsystem für Linux eine einfache Möglichkeit. Allerdings ist es auch mit einem
vollständig installierten Linux möglich. Nachfolgend wird mit dem Subsystem gearbeitet.

Unter Windows 10 das Windows Subsystem für Linux (Systemsteuerung -> Programme und Features)
installieren, dann den Computer neustarten.

Im nächsten Schritt aus dem Windows Store Ubuntu (Entwicklungstools für die Kommandozeile)
installieren.

Nach der Installation auf die Öffnen Schaltfläche klicken. Ein Terminalfenster öffnet sich. Dort einen
Benutzernamen und ein Kennwort vergeben.

MIB1 MIBRoot Patch Seite 5 von 27


Nach erfolgreichem Login an der Kommandozeile die folgenden Befehle ausführen:

 sudo apt update && sudo apt upgrade


 sudo apt install libucl1 libucl-dev liblzo2-2 liblzo2-dev

3.3 Erzeugen eines Arbeitsverzeichnisses

Im Windows Explorer oder auf der Kommandozeile von Windows (nicht Ubuntu) legen wir ein
Arbeitsverzeichnis an. Da auch unter Ubuntu auf dieses Verzeichnis zugegriffen werden wird, ist ein
kurzer Name sinnvoll.

 c:
 cd \
 mkdir a

3.4 Installation dumpifs

Vorbemerkung: Dieser Schritt ist nicht notwendig, wenn mit dem Tool IFSTool.exe gearbeitet wird.

Nach dem Herunterladen von dumpifs aus dem Github- Repository von askac, das ZIP-Archiv von
dumpifs im Arbeitsverzeichnis (aka c:\a) entpacken.

MIB1 MIBRoot Patch Seite 6 von 27


4 Zugang zur Konsole

4.1 Benötigte Utensilien

- Laptop mit Netzwerkbuche


- Unterstützte USB-Netzwerkkarte
o D-Link DUB-E100 HW rev. D1 (0x2001, 0x1a02)
o Folgende ID sollen ebenfalls kompatibel sein (nicht getestet):
 (0x2001, 0x3c05), (0x2001, 0x1a02), (0x0424, 0x9500), (0x2721, 0xec00),
0x1e2d, 0x0055), (0x1e2d, 0x0060)
- In einigen Fahrzeug wird ein Adapterkabel vom Audi Multimedia Interface -> USB benötigt.
Die anderen USB-Buchsen sind i.d.R. als „charge only“ gekennzeichnet und können nicht
verwendet werden.
- Telnet – Programm

4.2 Kennwörter Audi Europa

Für die unterschiedlichen Fahrzeuge des VW-Konzerns existieren etliche verschiedene Kennwörter,
die meisten Zugangsdaten sind mit etwas Internetrecherche zu finden. Für das Beispielfahrzeug
nachfolgend eine kurze Aufstellung:

MU Version Marke FW Version Hash PW


0356 Audi A3 MHIG_EU_AU_P1531 lVgttd5Ve94w6 eQQYUkCS
0397 Audi A3 MHIG_EU_AU_K1544 lVgttd5Ve94w6 eQQYUkCS
0404 Audi A3 MHIG_EU_AU_K1549 lVgttd5Ve94w6 eQQYUkCS

4.3 Login Möglichkeiten auf der MIB

Die MIB-Unit bietet 2 Möglichkeiten sich per Telnet einzuloggen. Jede seiner Hauptkomponenten –
MMX und RCC – hat seinen eigenen Zugang. Die Komponente RCC ist interessant, da sich dort die
Dateien MIBRoot und FecContainer.fec befinden.

RCC MMX
IP4: 172.16.250.248 IP4: 172.16.250.248
Port: 123 Port: 23
User: root User: root
Kennwort: siehe oben Kennwort: siehe oben

MIB1 MIBRoot Patch Seite 7 von 27


5 Backup/Dump MIB

Erstellung eines Backups der originalen MIB-Software. Nach dem erfolgreichen Login auf der MIB
RCC, bitte die folgenden Dateien sichern:

- Eeprom
- FecContainer.fec
- Variant.txt
- RCC
- MMX

Dazu sind die folgenden Befehle im Terminal auszuführen:


 mount -uw /net/mmx/fs/sda0/
 on -f rcc /usr/apps/modifyE2P r 0 10000 > /net/mmx/fs/sda0/eeprom.txt
 cp -r /net/rcc/mnt/efs-persist/FEC/FecContainer.fec /net/mmx/fs/sda0/FecContainer.fec
 cp -r /net/rcc/mnt/efs-persist/SWDL/Variant.txt /net/mmx/fs/sda0/Variant.txt
 cat /net/rcc/dev/fs0 > /net/mmx/fs/sda0/rcc_fs0
 cat /net/mmx/dev/fs0 > /net/mmx/fs/sda0/mmx_fs0

Die Dateien dann von der SD-Karte auf einen sicheren Speicherort übertragen. Die Dateien „rcc_fs0“
und „FecContainer.fec“ werden in den nächsten Schritten benötigt.

MIB1 MIBRoot Patch Seite 8 von 27


6 Patchen MIBRoot

Es gibt unterschiedliche Wege des Patchens des ifs-root.ifs Containers. Die nachfolgend vorgestellte
Methode basiert darauf, dass die Überprüfung von Hash-Werten ausgeschaltet wird. Damit werden
dann auch nicht-signierte FEC-Dateien anerkannt.

6.1 Extrahieren der Datei MIBRoot

Im Folgenden wird der Prozess beschrieben, wie aus dem erstellten Backup die Datei MIBRoot
extrahiert, angepasst wird und wieder in einen IFS-Container zurückintegriert wird, damit die Datei
auf der MIB eingespielt werden kann.

Firmware-Images enthalten selbstverständlich die Datei ifs-root.ifs. Die Datei kann mit dem IFSTool
und der Funktion „Split“ in die gewünschten Teile zerlegt werden. Man erhält die beiden Dateien ifs-
root-part1.ifs und ifs-root-part2.ifs. Die Datei ifs-root-part2.ifs ist die Interessante von beiden, da
diese Datei die Dateien MIBRoot und FecContainer.fec enthält.

ACHTUNG: Viele Firmware-Versionen besitzen mehrere Dateien ifs-root.ifs in unterschiedlichen


Ordnern, welche unterschiedliche Hashes besitzen. Wenn nicht 100-prozentig klar ist, welches ifs-
root.ifs im Fahrzeug benutzt wird, dann sollte man lieber den mühsameren Weg über die Extraktion
aus dem Backup gehen! Trotzdem kann zumindest die Dateigröße der Datei ifs-root-part2.ifs ein
wichtiger Anhaltspunkt sein, ob im nächsten Schritt die korrekte Dateigröße extrahiert wurde.

6.1.1 Extraktion der ifs-root-part2.ifs aus der Datei rcc_fs0

a Kopieren der rcc_fs0 vom Sicherungsort in das bereits erstellte Arbeitsverzeichnis c:\a

b Öffnen der Datei mit einem HEX-Editor (z.B. HxD)

c Nach dem Anfang der ifs-root suchen

 Die meisten MIB haben Ihren Offset-Beginn für den zweiten Teil der ifs-root bei
00BA0000. Dies ist aber keine Garantie! Am besten mit der Datei ifs-root-part2.ifs
vergleichen. Selbiges gilt für das Offset-Ende.

 Im Beispiel ist der Offset Anfang 00BA0000 und das Offset Ende 01865CDF

 Achtung: Insbesondere das Ende muss gesucht werden, da es in jeder Firmware


unterschiedlich sein kann und wird.

 Den Block (Offset-Anfang bis Offset-Ende) via Menü „Bearbeiten – Block markieren“
auswählen:

MIB1 MIBRoot Patch Seite 9 von 27


 Die Auswahl als neue Datei „new.ifs“ via Menü „Datei – Auswahl speichern“ sichern (vgl.
nachfolgendes Bild).

MIB1 MIBRoot Patch Seite 10 von 27


6.1.2 Extraktion der Datei MIBRoot aus der Datei new.ifs

Um die Datei MIBRoot zu extrahieren, gibt es zwei Möglichkeiten. Die erste führt über die Linux-
Konsole durch das Tool dumpifs, die zweite Möglichkeit führt über das Tool IFSTool. Der Weg über
das IFSTool ist einfacher und wird in den meisten Fällen bevorzugt werden.

6.1.2.1. Alternative A: Tool dumpifs

Zunächst müssen wir die Offset-Adresse der Datei MIBRoot sowie die Dateilänge herausfinden. Dies
geschieht mit Hilfe des Tools „dumpifs“.

Dazu begeben wir uns in die Linux Konsole, wechseln in das Arbeitsverzeichnis und führen folgenden
Befehl aus:

Linux > ./dumpifs new.ifs


Decompressed 13391738 bytes-> 36533124 bytes

Offset Size Name

0 100 Startup-header flags1=0x8 flags2=0 paddr_bias=0x7ffa00000000

100 4 startup.*

104 5c Image-header

160 2528 Image-directory

...

164b000 4c688 opt/sys/bin/Persistency

1698000 a66c54 usr/apps/MIBRoot

20ff000 387ec usr/apps/dev-irc

...

Checksums: image=0x8bd32d53 startup=0xfbfeaeac00000000

Image startup_size: 260 (0x104)

Image stored_size: 13393120 (0xcc5ce0)

Compressed size: 13392856 (0xcc5bd8)

Dumpifs dekomprimiert die Datei new.ifs und listet anschließend sowohl den Offset-Beginn der
enthaltenden Dateien als auch die jeweilige Dateilänge auf. Uns interessiert die Datei MIBRoot,
welche im Beispiel oben bei der Offset-Adresse 01698000 beginnt und eine Dateilänge von a66c54
aufweist. Diese beiden Werte merken wir uns.

Es gilt zu beachten, dass sich die Offset-Adresse und Dateilänge auf die dekomprimierte/entpackte
Version der Datei new.ifs beziehen, welche wir im nächsten Schritt erzeugen müssen.

MIB1 MIBRoot Patch Seite 11 von 27


Entpacken der Datei new.ifs:

Linux > ./dumpifs /mnt/c/a/new.ifs -f -vxd -u /mnt/c/a/new_dk.ifs


Image startup_size: 260 (0x104)

Image stored_size: 13393120 (0xcc5ce0)

Compressed size: 13392856 (0xcc5bd8)

LZO Decompress @0x104

lzo1x_decompress(buf, 9393344...)

Decompressed 13391738 bytes-> 36533124 bytes

Aus der dekomprimierten Datei kann nun mittels Hex-Editor die Datei MIBRoot extrahiert werden.

 Mittels des Menüs “Bearbeiten – Block auswählen” (STRG E) den Bereich der zu
extrahierenden Daten angeben. Dazu benötigen wir die Offset-Adresse und die
Dateilänge, die wir uns gemerkt haben.

 Im Beispiel sähe der Dialog dann wie folgt aus:

 Die Auswahl als neue Datei „MIBRoot“ via Menü „Datei – Auswahl speichern“ sichern

6.1.2.2. Alternative B: Tool IFSTool

Mit dem IFSTool sind die Schritte zur Extraktion der MIBRoot wesentlich leichter und komfortabler.
Nach dem Start des Tools laden wir die Datei new.ifs und entpacken diese mit einem Klick auf die
Schaltfläche “Extract”. Das IFS-Tool entpackt nun den Inhalt der Datei new.ifs in den Unterordner
new.

MIB1 MIBRoot Patch Seite 12 von 27


Sofern wir diesen Schritt in unserem Arbeitsverzeichnis “a” auf dem Laufwerk C durchgeführt haben,
dann findet sich die Datei MIBRoot nun in folgendem Pfad:

C:\a\new\usr\apps

Die Datei MIBRoot wurde korrekt entpackt. Problematisch ist nur, wenn man an dieser Stelle einen
direkten „Repack“ versucht, dann variierte die Dateigröße von der Ursprungsdatei. Eine Extraktion
aus der zuvor entpackten new.ifs in new-unpacked.ifs scheiterte in der mir zur Verfügung stehenden
Version des IFSTools mit einer Ausnahme-Fehlermeldung. Daher bleibt nur der Weg über die
manuelle spätere Integration via Hex-Editor.

Möglich wäre an dieser Stelle folgender Weg:

Extraktion der Datei MIBRoot aus der Datei new.ifs. Entpacken der Datei new.ifs in new-unpacked.ifs.
Umbenennung der Datei new-unpacked.ifs in new_dk.ifs (damit die Dateinamen nachfolgend
passen).

Wichtig ist, dass man sich an dieser Stelle – für die spätere Reintegration der gepatchten MIBRoot
Datei – die Offset Adresse und die Dateilänge aus dem IFSTool abschreibt. Andernfalls scheitert das
Einsetzen des Codes der gepatchten MIBRoot in die dekomprimierte Datei new_dk.ifs.

Damit stehen die beiden – für den weiteren Prozess notwendigen – Dateien zur Verfügung:
.1 new_dk.ifs
.2 MIBRoot

MIB1 MIBRoot Patch Seite 13 von 27


6.2 MIBRoot patchen

Egal, ob der Weg via dumpifs oder via IFSTool gewählt wurde. Als Ergebnis muss nun die originale
Datei MIBRoot vorliegen. In den folgenden Schritten benötigen wir einen Disassembler, um die
Stellen herauszufinden, welche modifiziert werden müssen. Der Disassembler muss Support für die
ARM-Plattform bieten.

Nachfolgend wird der Weg über den Disassembler IDA beschrieben. Mit anderen Disassemblern
sollte es aber in der Theorie genauso gut funktionieren.

Nach dem Start von IDA legen wir ein neues Projekt an:

Klick auf die Schaltfläche „New“.

In dem sich öffnenden Datei-Auswahlfenster setzen wir die Dateiendungen auf * und wählen die
Datei MIBRoot aus dem Arbeitsverzeichnis aus. IDA erkennt nun den Dateityp und präsentiert
folgendes Fenster:

Die vorausgewählten Einstellungen können mit einem Klick auf die Schaltfläche „OK“ übernommen
werden. Der nächste Schritt kann etwas dauern, da IDA nun mit dem Disassemblieren der Datei
MIBRoot beginnt.

MIB1 MIBRoot Patch Seite 14 von 27


Wenn IDA die Disassemblierung fertig gestellt hat, dann wechseln wir gegebenenfalls in das Fenster
„IDA-View A“ und rufen über das Menü „Search – Text“ die Suche auf.

In dem sich öffnenden Dialog wird als Suchstring „aCalculatedHash“ eingetragen und – falls noch
nicht vorausgewählt – das Feld „Find all occurrences“ angehakt. Mit einem Klick auf die Schaltfläche
„OK“ wird die Suche angestoßen. Diese dauert naturgemäß ebenfalls etwas.

MIB1 MIBRoot Patch Seite 15 von 27


Nach einer gewissen Dauer präsentiert IDA das Ergebnis der Suche in dem Reiter „Occurrences of:
aCalculatedHash“. Insgesamt gibt es also zwei Stellen, an denen zur Deaktivierung der FEC
Überprüfung eingegriffen werden muss.

Mit einem Doppelklick auf die erste Zeile (LOAD:006A4818…) öffnet sich in IDA View-A in der
Baumansicht an der betreffenden Stelle des ersten Suchergebnisses.

Die Baumansicht ist in diesem Fall nicht sehr übersichtlich, daher wird zur Textansicht gewechselt.
Mit einen Rechtsklick auf den grauen Rahmen öffnet sich ein Pop-Up-Fenster, in welchem „Text
view“ angeklickt wird.

MIB1 MIBRoot Patch Seite 16 von 27


Danach sieht die Anzeige in IDA View A wie folgt aus:

Wichtig ist zunächst die gelb hinterlegte Adresse. Aus der Anweisung

LOAD:006A480C MOVNE R4, #0

Muss nach der Bearbeitung

LOAD:006A480C MOVNE R4, #1

werden. Dazu wechselt man in die HEX-Ansicht und erhält folgende Ansicht:

Nach einem Druck auf die „F2“ Funktionstaste ist der Editiermodus freigeschaltet und die HEX-Werte
00 40 A0 13 können in 01 40 A0 13 geändert werden. Zum Abschluss der Bearbeitung wieder die
„F2“-Taste drücken und in die Ansicht „IDA View-A“ wechseln, in welcher das Ergebnis der
Bearbeitung zu sehen ist:

MIB1 MIBRoot Patch Seite 17 von 27


Im nächsten Schritt muss noch der folgende Abschnitt des ersten Blocks geändert werden:

LOAD:006A4880 BL MEMCMP
LOAD:006A4884 RSBS R4, R0, #1
LOAD:006A4888 MOVCC R4, #0

Wird modifiziert zu:

LOAD:006A4880 NOP
LOAD:006A4884 NOP
LOAD:006A4888 MOV R4, #1

Ansicht im Hex-View vor der Änderung

Ansicht im Hex-View nach der Änderung

Das Endergebnis des ersten Blocks in der IDA View-A sieht wie folgt aus:

MIB1 MIBRoot Patch Seite 18 von 27


Damit ist der erste Abschnitt fertig. Im Reiter „Occurences of: aCalculatedhash” wird jetzt auf das
zweite Vorkommen des Suchstrings geklickt.

Hier beginnt das Verfahren erneut. Nachfolgend die Änderungen gemäß den erzeugten Screenshots
vornehmen.

Erste Stelle Block 2 unmodifiziert:

Erste Stelle Block 2 modifiziert:

Zweite Stelle Block 2 unmodifiziert

Zweite Stelle Block 2 modifiziert

MIB1 MIBRoot Patch Seite 19 von 27


Das Endergebnis vom zweiten Block in der Ansicht IDA View-A:

Nach Abschluss der Arbeiten im Fenster IDA View-A nach oben scrollen und eine Adresse markieren,
vgl. nachfolgenden Ausschnitt:

MIB1 MIBRoot Patch Seite 20 von 27


Jetzt müssen noch die erfolgten Patches gesichert werden, dazu wählen wir aus dem Menü „Edit –
Patch program – Apply patches to input file…“

Im folgenden Dialog wähle ich zusätzlich die Checkbox „Create backup“ an und bestätige den Dialog
mit einem Klick auf die Schaltfläche „OK“.

Läuft alles korrekt ab, dann sollte ich im „Output Window“ (unten) folgenden Hinweis finden:

Damit ist die modifizierte Datei MIBRoot fertig.

MIB1 MIBRoot Patch Seite 21 von 27


6.3 Patch integrieren

Ziel ist es hier die gepatchte Datei MIBRoot wieder in den IFS-Container zu integrieren.

In einem Hex-Editor werden die Dateien new_dk.ifs und MIBRoot geöffnet. Der gesamte Inhalt der
Datei MIBRoot wird markiert und in die Zwischenablage kopiert.

Nun benötigen wir die Offset-Adresse und die Dateilänge der vorher entnommenen Datei MIBRoot,
die wir uns gemerkt haben. In diesem Fall war es die Offset-Adresse 01698000 und eine Dateilänge
von A66C54.

In der Datei new_dk.ifs den obigen Bereich mittels des Menüs “Bearbeiten – Block auswählen” (STRG
E) markieren. Dann den Inhalt der Zwischenablage (den Inhalt der neuen MIBRoot) einfügen (STRG V)
und die geänderte Datei new_dk.ifs speichern und den Hex-Editor schließen.

Zuletzt muss die Datei new_dk.ifs wieder komprimiert werden. Der einfachste Weg führt über das
IFSTool. Dort laden wir die Datei new_dk.ifs und klicken auf die Schaltfläche „Pack“.

Hat alles richtig funktioniert, dann haben nun die neue Datei new_dk-repacked.ifs und die Basisdatei
new.ifs die gleiche Dateigröße. In diesem Fall sind es 13392853 bytes aka 13080 kb.

Final habe ich für mich die Datei new_dk-repacked in patched_ifs.ifs umbenannt.

MIB1 MIBRoot Patch Seite 22 von 27


7 Patch installieren

Im entscheidenden Schritt wird die gepatchte Version des zweiten Teils der ifs-root.ifs in die MIB
übertragen. Dazu legen wir die SD-Karte mit der gepatchten Datei in den Slot 1 der MIB und führen
auf der MIB RCC Konsole die folgenden Befehle aus:

 mount -uw /net/mmx/fs/sda0/

 flashunlock

 /usr/bin/flashit -v -x -d -a 0x00BA0000 -f/net/mmx/fs/sda0/patched_ifs.ifs

 flashlock

Nach deinem Reboot des MMI ist die gepatchte MIB-Software aktiv und sollte nun die Anpassungen
der FEC-Datei im folgenden Kapitel akzeptieren.

Beim Beispielfahrzeug gelingt der Reboot/Reset des MMI mit der Tastenkombination MENÜ – WHEEL
– OBERE RECHTE FUNKTIONSTASTE.

MIB1 MIBRoot Patch Seite 23 von 27


8 Anpassung FecContainer

8.1 Liste mit FEC Codes

00030000 — AMI (USB Enable)


00030001 — Gracenote
00040100 — Navigation
00050000 — Bluetooth
00060100 — Vehicle Data Interface
00060200 — Skoda/Audi Connect, VW CarNet
00060300 — Mirror Link
00060400 — Sport HMI (Performance Monitor)
00060500 — Sport Chrono – Funktion unbekannt
00060600 — Logbook – Funktion unbekannt
00060700 — Online Services
00060800 — Apple CarPlay
00060900 — Google Android Auto
00060A00 — Baidu CarLife für iOS (China only)
00060B00 — Baidu CarLife für Android (China only)
00070100 — SDS (Sprachsteuerung)
00070200 — SDS (Sprachsteuerung) for Navigation
00070400 — Digital Voice Enhancement

8.2 FEC Code für Kartenunterstützung

0ABCCCDD — Karten:

A Marke 2 = Audi, 3 = Bentley, 6 = Porsche, 7 = Sitz, 8 = Skoda, 9 = VW, C = MAN


B MIB version 1 = MIB1 HIGH (Harman), 3 = MIB2 HIGH (Harman)
ССС Region 000 = Europa, 100 = USA und Kanada (NAR - North America Region), 400 = Naher
Osten (AGCC - Bahrain, Kuwait, Oman, Qatar, Saudi Arabien, UAE), 401 = AGCC + Türkei, 402 = AGCC
+ Israel, 500 = Süd Afrika, 600 = Australien und Neuseeland, 700 = Indie, 800 = Argentinien, Brazilien
and Mexiko, 801 = Chile, 900 = Asien / Pacific, D00 = Rest der Welt (ROW - Rest Of the World)
DD gültig bis zum Jahr (DD ist ein Hex-Wert)

DD:
- 4c= 2030
- FF = ~2075/Lifetime

MIB1 MIBRoot Patch Seite 24 von 27


8.3 Erzeugung einer neuen FEC-Datei mit WhatTheFec

Zunächst laden wir die gesicherte Datei FecContainer.fec des Fahrzeugs.

Die Signatur ist grün, damit ist diese auch auf nicht gepatchten MIB funktionsfähig. Nun fügen wir
eine weitere FEC hinzu (hier Verlängerung der MAPS bis 2030).

Die Signatur ist nun rot (ungültig) und damit auf nicht gepatchten MIBs nicht zu benutzen.

MIB1 MIBRoot Patch Seite 25 von 27


8.4 Kopieren der angepassten FEC-Datei auf die MIB

Nach dem Login auf der MIB RCC, Ausführung der folgenden Kommandos:
 mount -uw /net/mmx/fs/sda0/
 mount -uw /net/rcc/mnt/efs-persist
 cp -r /net/mmx/fs/sda0/FecContainer.fec /net/rcc/mnt/efs-persist/FEC/FecContainer.fec
 mount -ur /net/rcc/mnt/efs-persist

Neustart des MMI via Tastenkombination (z.B. MENÜ/WHEEL/OBERE RECHTE FUNKTIONSTASTE).

MIB1 MIBRoot Patch Seite 26 von 27


9 Anpassung Steuergerät 5F

Bei mir waren nach den Anpassungen Fehler im Steuergerät 5F zu finden, u.a. der Fehler „Software
version management check failed“ steht nach dem Update im Fehlerspeicher des Steuergerätes 5F.

Da ich aber keine Änderung der Verbauart vorgenommen hatte, ließen sich die Fehler einfach mit
VCDS löschen, ohne das auf Tools wie XORechner-XTR etc. zurückgegriffen werden musste.

Sofern Änderungen in der Verbauart vorgenommen wurden, dann führt folgender Weg bei VCDS
zum Ziel:

1 STG 5F (Informationselektronik) auswählen


2 Funktion ZUGRIFFSBERECHTIGUNG 16 auswählen, angezeigten Code eintragen
3 Funktion ANPASSUNG 10
4 Unter SUCHEN/FILTER nach dem Stichwort „IDE02502“ eingeben
5 Unter ANPASSUNGSKANAL folgenden Punkt auswählen:
5.1 IDE02502: Confirmation of installation change
6 Unter NEUER WERT den alten Wert kopieren
7 Zwei Möglichkeiten zu einem akzeptierten neuen Wert zu kommen
7.1 Website http://mib-helper.com/im-so-xory/ aufrufen und den alten Wert eintragen und
einen neuen Wert berechnen lassen
7.2 Alternativ funktioniert dies auch über das Tool XORechner-XTR oder ähnliche Software
8 Den neuen Wert nun in das Feld NEUER WERT von VCDS übernehmen und den Dialog
bestätigen.
9 Das Steuergerät sollte den neuen Wert nun anzeigen. Evtl. wird der alte Wert nochmals
angezeigt. Dann hat sich das Löschen des Fehlerspeichers bewährt. Sofern allerdings keine
Bauartveränderung vorgenommen wurde, dann bleibt es bei dem alten Wert. Der Fehler im
Steuergerät sollte aber verschwunden sein.

MIB1 MIBRoot Patch Seite 27 von 27

Das könnte Ihnen auch gefallen