Buchrezension: Arm Assembly Internals and Reverse Engineering

Eine auf Sicherheitsfachleute zugeschnittene Einführung in ARM Assembly weiß auch generell an Mikrocontrollern Interessierte zu begeistern.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Buchrezension: Arm Assembly Internals and Reverse Engineering

(Bild: cherezoff / Shutterstock.com)

Lesezeit: 6 Min.
Von
  • Tam Hanna
Inhaltsverzeichnis

Maria Markstedter
Blue Fox: Arm Assembly Internals and Reverse Engineering
Wiley, April 2023
480 Seiten, ab 28,99 Euro (Print und E-Book)
ISBN: 978-1-119-74530-3

Wichtige Interna wie der Assembler-Befehlssatz lassen sich bei 8-Bit-Mikrocontrollern in der Regel durch die Lektüre der zugehörigen Datenblätter erschließen, wie etwa beim berühmt-berüchtigten PIC16. Die Kurzinformationen zu modernen ARM-Mikrocontrollern hingegen verzichten häufig komplett auf Hinweise zum Assembler-Befehlssatz. Wer danach sucht, muss sich meist durch Architekturbeschreibungen kämpfen, die schon mal mehrere tausend Seiten umfassen können.

Der Wiley-Verlag schickt in seiner Blue-Fox-Reihe ein neues Buch unter dem Titel "Arm Assembly Internals and Reverse Engineering" ins Rennen, das primär sicherlich für Computersicherheitsexpertinnen und -experten vorgesehen ist, darüber hinaus aber auch für diejenigen einen geeigneten Einstieg darstellt, die sich für die ARM-Assemblersprache interessieren. Die Autorin, Maria Markstedter, hat sich als Security-Spezialistin einen Namen gemacht; so erhielt sie etwa 2020 den Titel der "Forbes Person of the Year in Cybersecurity". Das von ihr gegründete und geleitete Unternehmen Azeria Labs führt unter anderem Schulungen zum Thema Reverse Engineering durch.

Zum Einstieg in ihr Buch stellt Markstedter einige grundlegende Überlegungen zum Binärsystem an und schreibt weiter über die Compiler-Toolchain, die Rolle von Linkern und andere Hilfsmittel. Erfahrenen Softwareexpertinnen und Elektronikern dürfte das meiste davon vertraut sein. Lesenswert ist Markstedters Einführung trotzdem, weil sie auch verschiedene Werkzeuge präsentiert, die bei der Analyse von ARM-Binaries (und auch x86-Binaries) hilfreich sind.

Das zweite Kapitel widmet sich dem ELF-Dateiformat. Es zeigt erstmals längere Listings in ARM Assembly. Die Beschreibung der Sektionen einer ELF-Binärdatei ist nicht nur für ARM-Assembler-Programmierende, sondern auch Linux-Enthusiasten im Allgemeinen von Interesse – zumal der Kernel das altehrwürdige a.out-Format nicht mehr unterstützt.

(Bild: Wiley / Blue Fox)

Schon auf den ersten Seiten beweist die Autorin Liebe zum Detail: Am Ende des zweiten Kapitels finden sich Dutzende Verweise auf Quellen, darunter die GCC-Dokumentation: Wer sich darin weiter vertiefen möchte, dem sind die zur Verfügung gestellten Literaturverweise eine wertvolle Hilfe.

Auch das dritte Kapitel ist auf die Bedürfnisse von Linux-Enthusiasten optimiert: Markstedter präsentiert die verschiedenen Elemente der Linux-Architektur und geht beispielsweise auf den Unterschied zwischen User- und Kernel-Mode ein. Themen wie Speicher- und Prozessschutz respektive threadlokale Speicher kommen ebenfalls zur Sprache – damit vermittelt die Autorin Leserinnen und Lesern ein funktionales Verständnis von Linux.

Nach der recht detaillierten Beschreibung der Möglichkeiten und Grenzen des inneren Aufbaus unixoider Betriebssysteme folgt die eigentliche Besprechung des Cores: Im Interesse der Kompaktheit beschränkt sich Markstedter auf die ARMv8A-Architektur, geht aber sowohl auf die 32-Bit als auch auf die 64-Bit-Varianten des Rechenkerns ein.

Überlegungen zu den verschiedenen Exception Levels oder der Rolle und Implementierung der Sicherheitstechnologie Trustzone vermitteln einen Überblick, was ARM seinen Chipherstellern in Softcores und sonstigem geistigem Eigentum zur Verfügung stellt.

Darüber hinaus finden erfahrene 8-Bit-Assembler-Programmierer in dem Blue-Fox-Buch alles, was sie erwarten: von den verschiedenen Run-Levels bis zu den Registern.

Die eigentliche Assembler-Sprache wird anschließend in Gruppen abgehandelt: Jedes Kapitel stellt die zu einer Aufgabe passenden Instruktionen vor. Als Erstes kommen dabei die verschiedenen Data Processing-Befehle zum Einsatz, die dem Mikrocontroller beziehungsweise Mikroprozessor die Durchführung der verschiedensten Berechnungen ermöglichen. Danach wendet sich Markstedter dem Speicherzugriff zu. Lobenswert empfand der Rezensent die erläuternden Grafiken.

Zum Abschluss widmet sich die Autorin den verschiedenen konditionalen Befehlen, aufgeteilt in zwei Gruppen: zuerst die gewöhnlichen Selektionen und danach Befehle, die sich auf den Kontrollfluss als Ganzes auswirken. Wie in den vorhergehenden Kapiteln gilt auch hier, dass der Blue-Fox-Autorin die Trennung von Spreu und Weizen vorbildlich gelingt: Markstedter geht auf Details von ARM Assembly ein, ohne Lesende mit unnötigem Datenblattwissen zu überfordern.

Das Werk beschränkt sich jedoch nicht auf das simple Vorstellen von Arm Assembly: Das Lehrbuch hat das Ziel, Computersicherheitsexperten die Reflektion und Analyse von vorgelegtem ARM-Code zu ermöglichen. Der zweite Teil des Buchs startet daher mit Überlegungen zu verschiedenen Methoden zum Beschaffen geeigneter ARM-Hardware. Neben Vorstellungen von Evaluationsboards finden sich umfangreiche Überlegungen zum Emulator QEMU, der eine x86-Workstation zur gemächlichen, aber im Debugger gut überwachbaren Ausführung von ARM-Binärdateien verhilft.

Unter dem Begriff der statischen Analyse präsentiert die Autorin im nächsten Schritt verschiedene Disassembler, Decompiler und vergleichbare Systeme. Lobenswert ist, dass der behandelte Stoffumfang hier weit über den üblichen Zweikampf zwischen IDA Pro und Ghidra hinausgeht. Mit Binary Ninja Cloud stellt die Autorin sogar einen Disassembler vor, der in der Cloud lebt und sich ohne Installation auf der lokalen Workstation einsatzbereit machen lässt. Das anschließende Kapitel zur dynamischen Analyse geht dann auf verschiedene Debugger ein, die die Analyse von Code en vivant ermöglichen.

Der Schlussteil wendet sich dann auf rund 30 Seiten der Thematik von Apples-M-Prozessoren zu, die ebenfalls auf der ARM-Architektur basieren. Neben der Vorstellung verschiedener Werkzeuge geht Markstedter darauf ein, welche Besonderheiten macOS gegenüber anderen unixoiden Betriebssystemen aufweist. Besprechungen nützlicher macOS-Kommandozeilenwerkzeuge runden die Exkurse ab.

ARM Assembly ist ein zwar ein umfassendes Thema, das aber sowohl angesichts der Verfügbarkeit leistungsfähiger Compiler als auch der immensen Rechenleistung selbst primitiver Mikrocontroller wie dem GigaDevice GD32F103 nur selten Thema ist.

Wer dennoch einen Blick hinter die Kulissen werfen möchte, wird den Kauf des Buchs sicherlich nicht bereuen. Die Auswahl des von Markstedter präsentierten Stoffs ist auf diese Zielgruppe optimal zugeschnitten. Interessierte werden nicht mit Details ermüdet, finden aber genug ARM-Codebeispiele, um mit den Resultaten effektiv arbeiten zu können. Unterm Strich ist "Blue Fox: Arm Assembly Internals and Reverse Engineering" für Mikrocontroller-Interessierte eine klare Empfehlung. Die englische Sprache der Autorin ist auch für Nicht-Muttersprachler problemlos verständlich.

Tam Hanna
befasst sich seit dem Jahr 2004 mit Handcomputern und Elektronik. Derzeit liegt sein Fokus auf interdisziplinären Anwendungen von Informationstechnologie.

(map)