Abo
  • Services:
Anzeige
Code des Bootloaders
Code des Bootloaders (Bild: Christer Weinigel)

Reverse Engineering: Pin sucht Kontakt

Code des Bootloaders
Code des Bootloaders (Bild: Christer Weinigel)

Ohne die notwendige Hardware-Unterstützung ist auch ein lauffähiges Linux nicht viel Wert. Mit einigen Tricks analysieren wir, wie der Prozessor die Hardware eines Oszilloskops ansteuert.
Eine Anleitung von Christer Weinigel

Im dritten Teil meiner fünfteiligen Serie zur Analyse eines Oszilloskops per Reverse Engineering versuche ich, herauszufinden, welche Funktion die GPIO-Pins des SoC haben. Bis jetzt habe ich es geschafft, Linux auf dem Oszilloskop zum Laufen zu bekommen und weiß, was alles in dessen Flashspeicher steckt.

Anzeige

Wo anfangen?

Disassemblierten Binärcode zu analysieren, ist aufwendig und langweilig. Die 3 MByte große Binärdatei mit dem originalen Betriebssystem des Oszilloskops durchzugehen, würde Jahre brauchen, deswegen habe ich beschlossen, eine Abkürzung zu nehmen.

Was mich am meisten interessiert, ist Code, der mit der Hardware interagiert, sprich die GPIO-Pins. Üblicherweise lädt der entsprechende Code zum Zugriff auf die GPIO-Register die Basis-Adresse der zugehörigen GPIO-Bank in ein CPU-Register und steuert dann den Pin mit einer Kombination aus CPU-Register plus Offset-Wert des jeweiligen GPIO-Registers des betreffenden Pins. Eine Bank ist hier ein zusammenhängender Speicherbereich, der eine Anzahl von Pins und ihre Eigenschaften repräsentiert.

Die Basis-Adresse für die GPIO-Register ist 0x56000000. Und der Binärcode für eine ARM-Instruktion, um einen Wert in ein CPU-Register zu laden, ist 0xe3a0?456. Das Fragezeichen steht für die CPU-Register-Nummer und die 56 am Ende sind die höchsten 8 Bit der Adresse. Die Suche ist nun recht trivial, ich gebe die Betriebsystemdatei "os" aus, leite die Ausgabe an das Kommandozeilenprogramm less um und verwende dessen /-Kommando, um nach den Bytes der Instruktionen suchen zu lassen.

$ hd "os" | less
/56 .4 a0 e3

Dann benutze ich das Programm Medusa, um den Code um die Fundstellen anzuschauen und zu analysieren. Immer noch aufwendig, aber immer noch besser, als den gesamten Code durchzugehen.

Ein Blick auf die Fundstellen

So finde ich zum Beispiel einige Wrapper-Funktionen, mit denen die GPIO-Pins GPB4 und GPB9 gesteuert werden.

  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • I2C-Kommunikation (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • Analog-Frontend (Foto: Christer Weinigel)
(Foto: Christer Weinigel)

Das ist an sich noch wenig nützlich. Aber ich versehe die Funktionen mit beschreibenden Namen und setze die Disassemblierung fort. So stoße ich auf den Code, wo diese Funktionen aufgerufen werden.

  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • I2C-Kommunikation (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • Analog-Frontend (Foto: Christer Weinigel)
(Foto: Christer Weinigel)

Wie bereits an den Funktionsnamen erkennbar, habe ich schon herausgefunden, dass diese Pins für den I2C-Bus benutzt werden. Die erste Funktion i2c_start konfiguriert die beiden Pins für die Ausgabe und setzt dann GPB4 und GPB9 auf Low. Die zweite Funktion setzt GPB4 zuerst auf Low, GPB9 auf High und danach GPB4 ebenfalls auf High.

Hier ist eine Abbildung aus einem I2C-Tutorial, wie der Signalverlauf auf dem I2C-Bus aussieht:

  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • I2C-Kommunikation (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • (Foto: Christer Weinigel)
  • Analog-Frontend (Foto: Christer Weinigel)
I2C-Kommunikation (Foto: Christer Weinigel)

Wenn GPB4 die SDA-Leitung ansteuert und GBP9 die SCL-Leitung entspricht der Code perfekt den I2C-Start- und Stop-Signalen. Weitere Funktionen im Binärcode an dieser Stelle implementieren Schreib- und Lese-Operationen für den I2C-Bus.

I2C mit Linux 

eye home zur Startseite
AgentBignose 25. Nov 2016

Ähm, ja.... Was meinst du wie Leute wie der ursprüngliche Autor gefragt sind...

Karl-Heinz 23. Nov 2016

heißen die Dinger hier. Vielleicht bin ich aber auch nur zu oldschool :)

Luu 23. Nov 2016

Einfach nur große Klasse. Könnten sich andere eine Scheibe von abschneiden.



Anzeige

Stellenmarkt
  1. Schaeffler Technologies AG & Co. KG, Herzogenaurach
  2. Landeshauptstadt Wiesbaden, Wiesbaden
  3. Eucon GmbH, Münster
  4. T-Systems International GmbH, verschiedene Standorte


Anzeige
Blu-ray-Angebote
  1. (u. a. Spaceballs, Training Day, Der längste Tag)
  2. (u. a. Reign, Person of Interest, Gossip Girl, The Clone Wars)
  3. 16,99€ (ohne Prime bzw. unter 29€ Einkauf zzgl. 3€ Versand)

Folgen Sie uns
       


  1. Blizzard

    Starcraft Remastered erscheint im Sommer 2017

  2. Atom-Unfall

    WD erweitert Support für NAS mit Intels fehlerhaftem Atom

  3. SecurityWatchScam ID

    T-Mobile blockiert Spam-Anrufe

  4. AT&T

    USA bauen Millionen Glasfaserverbindungen

  5. Super Mario Run

    Nintendo bleibt trotz Enttäuschung beim Bezahlmodell

  6. Samsung

    Galaxy Note 7 wird per Update endgültig lahmgelegt

  7. The Ringed City

    From Software zeigt Abschluss von Dark Souls 3 im Trailer

  8. Dieter Lauinger

    Minister fordert Gesetz gegen Hasskommentare noch vor Wahl

  9. Die Woche im Video

    Cebit wird heiß, Android wird neu, Aliens werden gesprächig

  10. Mobilfunkausrüster

    Welche Frequenzen für 5G in Deutschland diskutiert werden



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Mobile-Games-Auslese: Würfelkrieger und Kartendiebe für mobile Spieler
Mobile-Games-Auslese
Würfelkrieger und Kartendiebe für mobile Spieler

Hannover: Die Sommer-Cebit wird teuer
Hannover
Die Sommer-Cebit wird teuer
  1. Hannover Pavillons für die Sommer-Cebit sind schon ausgebucht
  2. Ab 2018 Cebit findet künftig im Sommer statt
  3. Modell 32UD99 LGs erster HDR-Monitor mit USB-C kommt nach Deutschland

Live-Linux: Knoppix 8.0 bringt moderne Technik für neue Hardware
Live-Linux
Knoppix 8.0 bringt moderne Technik für neue Hardware

  1. Re: Wenn schon remastered, dann bitte Command and...

    zilti | 04:40

  2. Re: Die GPLv3 wird auch noch nicht juristisch...

    picaschaf | 03:41

  3. Re: Geschwindigkeiten zu niedrig

    gaym0r | 02:09

  4. Re: Eigentlich doch genial

    plutoniumsulfat | 01:22

  5. Re: Hoffentlich verlangt jemand von denen eine...

    RipClaw | 01:08


  1. 19:03

  2. 14:32

  3. 14:16

  4. 13:00

  5. 15:20

  6. 14:13

  7. 12:52

  8. 12:39


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel