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. ARRI Media GmbH, München
  2. Ratbacher GmbH, Frankfurt
  3. Haufe Gruppe, Freiburg im Breisgau
  4. doubleSlash Net-Business GmbH, München


Anzeige
Blu-ray-Angebote
  1. 29,99€ (Vorbesteller-Preisgarantie)
  2. 29,99€ (Vorbesteller-Preisgarantie)
  3. für 1€ über Sky Ticket (via App auch auf Smartphone/Tablet, Apple TV, PS3, PS4, Xbox One...

Folgen Sie uns
       


  1. Search Light

    Google testet schlanke Such-App

  2. 3D-Drucker

    Neues Verfahren erkennt Manipulationen beim 3D-Druck

  3. AVS Device SDK

    Amazon bringt Alexa auf Raspberry Pi und andere Boards

  4. Adblock Plus

    OLG München erklärt Werbeblocker für zulässig

  5. Streaming

    Netflix plant 7 Milliarden US-Dollar für eigenen Content ein

  6. Coffee Lake

    Core i3 als Quadcores und Core i5 als Hexacores

  7. Starcraft Remastered im Test

    Klick, klick, klick, klick, klick als wär es 1998

  8. KB4034658

    Anniversary-Update-Update macht Probleme mit WSUS

  9. Container

    Githubs Kubernetes-Cluster überlebt regelmäßige Kernel-Panic

  10. Radeon RX Vega

    Mining-Treiber steigert MH/s deutlich



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Mercedes S-Klasse im Test: Das selbstfahrende Auto ist schon sehr nahe
Mercedes S-Klasse im Test
Das selbstfahrende Auto ist schon sehr nahe
  1. Autonomes Fahren Fiat Chrysler kooperiert mit BMW und Intel
  2. 3M Verkehrsschilder informieren autonom fahrende Autos
  3. Waymo Autonomes Auto zerstört sich beim Unfall mit Fußgängern

LG 34UC89G im Test: Wenn G-Sync und 166 Hertz nicht genug sind
LG 34UC89G im Test
Wenn G-Sync und 166 Hertz nicht genug sind
  1. LG 43UD79-B LG bringt Monitor mit 42,5-Zoll-Panel für vier Signalquellen
  2. Gaming-Monitor Viewsonic XG 2530 im Test 240 Hertz, an die man sich gewöhnen kann
  3. SW271 Benq bringt HDR-Display mit 10-Bit-Panel

Windows 10 S im Test: Das S steht für schlechtes Marketing
Windows 10 S im Test
Das S steht für schlechtes Marketing
  1. Microsoft Neugierige Nutzer können Windows 10 S ausprobieren
  2. Surface Diagnostic Toolkit Surface-Tool kommt in den Windows Store
  3. Malware Der unvollständige Ransomware-Schutz von Windows 10 S

  1. Ladezeiten/Traffic golem.de mit/ohne AdBlocker...

    lejared | 21:18

  2. Re: Danke!

    Johnny Cache | 21:06

  3. Re: Solange sie Content produzieren wie

    Magdalis | 21:04

  4. Re: Kurzgesagt

    CSCmdr | 20:55

  5. Re: sieht trotzdem ...

    CSCmdr | 20:52


  1. 17:02

  2. 15:55

  3. 15:41

  4. 15:16

  5. 14:57

  6. 14:40

  7. 14:26

  8. 13:31


  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