Hallo, mein Famalienauto (Peugeot 206) hat einen Defekt mit dem Automatikgetriebe (AL4 4-speed). Bei Reparaturversuchen fand ich das Getriebesteuergerät interessant. Es kann auch sehr günstig gekauft werden. Daher versuche ich Reverse Engineering des Gerät. Das Hardware is abgeschlossen: als der Haupt-mikrokontroler verwendet es den Chip SAK-C167CR-LM (ohne internal ROM), und kontrolliert einige digitale/analoge Ein-/Ausgänge, den CAN/K-Bus und einige Electrovalves (EVS). Ich hab auch Daten vom NAND-Flash (AM29F200BB) heruntergeladen, und das Software Reverse Engineering angefangen. Ich habe einige Fragen: 1. In der Schaltung für EVS-Antrieb gibt es extra transistors, was machen sie? Wenn die Kathode der Freilaufdiode (D410) direct an +12V angeschlossen ist, dann verstehe ich es vollständig. Ich habe versucht, der Schaltung zu erkennen, vielleicht ist es für schnelleres Abschalten? Während normale EVS-Antrieb, wie funktioniert die Signale MainEVS_CPU_PWM und MainEVS_CPU_CurrentSet? 2. Was ist das beste Disassembler/Decompiler für diese CPU? Ich habe https://github.com/keyhana/c166-ghidra-module ausprobiert, gibt es etwas Besseres? Wie viel Zeit/Arbeit ist es, 50% des Codes zu dekompilieren? 90%? Vielen Dank!
:
Bearbeitet durch User
Kevin schrieb: > 2. Was ist das beste Disassembler/Decompiler für diese CPU? Ich habe > https://github.com/keyhana/c166-ghidra-module ausprobiert, gibt es etwas > Besseres? Wie viel Zeit/Arbeit ist es, 50% des Codes zu dekompilieren? IDA Pro der kostet allerdings. Es gibt nichts besseres. 2MB zu disassemblieren geht schnell, das Ganze aber zu verstehen kann viele Wochen dauern. IDA hat auch so nette Funktionen wie FLIRT zum identifizieren der Lib Funktionen. Das setzt aber voraus dass du für den Compiler passende Flirt Dateien hast. Da der Code mit ziemlicher Sicherheit von einem C Compiler kommt ist es auch hilfreich wenn man dessen Aufruf Konventionen kennt. Edit: Q411 dürfte ein PNP sein. Vermutlich ist das sowas wie eine diskrete Darlingtion Stufe.
:
Bearbeitet durch User
Hast Du bereits Erfahrung mit Firmware Reverse Engineering? Falls nicht: Firmware aus automotive Steuergeräten fällt in die sehr anspruchsvolle Kategorie, ohne viel Erfahrung wird man damit wenig Freude haben. Der Grund ist u.a dass es dort üblicherweise keine Strings oder Debug Funktionen gibt die Hinweise auf die Funktion geben (Ausnahmen sind Infotainment oder Telematik ECUs). Ob IDA Pro oder Ghidra als Tool ist dabei nicht entscheidend, auf die Erfahrung kommt es an. Du kannst ja mal den Firmware Dump hier hochladen.
:
Bearbeitet durch User
Dieter S. schrieb: > auf die > Erfahrung kommt es an. Ich habe mittlerweile auch die Chat Ki'S dafür verwendet. Einen Haufen Asm code rein kopieren und sich erklären lassen. Oft ergeben sich daraus neue erkenntnisse. Wo man vorher denkt das macht irgendwie keinen sinn kennt chatgpt eventuell doch einen sinn. Natürlich nicht den ganzen code. Nur Teile. Man muss trozdem selber denken.
Thomas Z. schrieb: > IDA Pro der kostet allerdings. Es gibt nichts besseres. 2MB zu > disassemblieren geht schnell, das Ganze aber zu verstehen kann viele > Wochen dauern. IDA hat auch so nette Funktionen wie FLIRT zum > identifizieren der Lib Funktionen. Das setzt aber voraus dass du für den > Compiler passende Flirt Dateien hast. > > Da der Code mit ziemlicher Sicherheit von einem C Compiler kommt ist es > auch hilfreich wenn man dessen Aufruf Konventionen kennt. > > Edit: > Q411 dürfte ein PNP sein. Vermutlich ist das sowas wie eine diskrete > Darlingtion Stufe. Danke, aber IDA Pro ist leider viel zu teuer für mich, es kostet mehr als das ganze Auto LOL. Ich weiß nicht welcher Compiler verwendet wurde, ich denke Keil, weil ich 'R0 stack'(https://www.keil.com/appnotes/files/apnt_124.pdf) und 'Bootloader interrupt vectors'(https://www.keil.com/support/docs/2881.htm) im Code sehe. Ich bin sicher, dass Q411 ein NPN sein, weil ich es getestet habe, mit der AVR-Transistortester. Auch die Kennzeichnung stimmt mit MJD148 von onsemi (die beiden Transistoren unten).
Dieter S. schrieb: > Hast Du bereits Erfahrung mit Firmware Reverse Engineering? > > Falls nicht: Firmware aus automotive Steuergeräten fällt in die sehr > anspruchsvolle Kategorie, ohne viel Erfahrung wird man damit wenig > Freude haben. Der Grund ist u.a dass es dort üblicherweise keine Strings > oder Debug Funktionen gibt die Hinweise auf die Funktion geben > (Ausnahmen sind Infotainment oder Telematik ECUs). > > Ob IDA Pro oder Ghidra als Tool ist dabei nicht entscheidend, auf die > Erfahrung kommt es an. > > Du kannst ja mal den Firmware Dump hier hochladen. Keine Erfahrung, ich hoffe etwas zu lernen. Soweit ich weiß, werden die Flash-Daten wiederholt, an 0x000000(Bootloader) und 0x040000(Application).
Kevin schrieb: > ch bin sicher, dass Q411 ein NPN sein, weil ich es getestet habe, mit > der AVR-Transistortester. Auch die Kennzeichnung stimmt mit MJD148 von > onsemi (die beiden Transistoren unten). ok, seltsam aber dass der Emiter auf +12V liegt
Dass der Flash an 0x00000 und 0x40000 auftaucht hast Du ja schon gesehen. Am Besten fängt man dort an wo man eventuell schon etwas über das Steuergerät weiß, das wären z.B. die Diagnosefunktionen der ECU (das bekommt man z.B. über einen Mitschnitt bei der Diagnose des Steuergeräts mit der dazu passenden Diagnosesoftware heraus). Hier sind zum Einstieg ein paar Adressen:
1 | 0x747A6 Funktion Diagnostic Services auswerten (verwendete die |
2 | folgende Tabelle) |
3 | |
4 | 0x526FC Tabelle Diagnostic Services |
5 | (zeigt teilweise auf weitere Tabellen, z.B. für |
6 | "Routine Conntrol") |
7 | |
8 | 0x74A82 Funktion Tester Present (als Beispiel für einen |
9 | Diagnostic Service) |
10 | |
11 | 0x749FC Funktion Diagnostic Error Code (hilfreich weil die |
12 | Funktion häufig verwendet wird und der Fehlercode |
13 | weitere Rückschlüsse liefert) |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.