Reverse Engineering für alle
(0xinfection.github.io)- Reverse Engineering For Everyone ist eine Sammlung von Tutorials, die so aufgebaut ist, dass Menschen, die Reverse Engineering zum ersten Mal lernen, den Konzepten und dem praktischen Ablauf folgen können
- Reverse Engineering ist der Prozess, ein Artefakt zu zerlegen, um Design, Architektur, Code oder Wissen offenzulegen
- Das Curriculum behandelt x86, x64, ARM-32, ARM-64 und richtet sich sowohl an Einsteiger als auch an Leser, die Konzepte noch einmal überprüfen möchten
- Es ist so strukturiert, dass man auch ohne Vorkenntnisse beginnen und schrittweise bis zu den mittelstufigen Grundlagen des Reverse Engineerings lernen kann
- Das komplette Tutorial kann als PDF und MOBI heruntergeladen werden, und wenn neue Tutorials hinzugefügt werden, werden auch die E-Book-Versionen automatisch aktualisiert
Ziel des Reverse Engineerings
- Reverse Engineering wird auch backwards engineering oder back engineering genannt
- Es ist der Prozess, ein Zielartefakt zu zerlegen, um dessen Design, Architektur, Code offenzulegen oder Wissen daraus zu extrahieren
- Es ähnelt wissenschaftlicher Forschung, unterscheidet sich aber darin, dass wissenschaftliche Forschung natürliche Phänomene untersucht
- Diese Tutorial-Sammlung konzentriert sich darauf, Reverse Engineering so einfach wie möglich erlernbar zu machen
Curriculum und Zielgruppe
- Die wichtigsten behandelten Kurse sind:
- Es richtet sich sowohl an Anfänger, die Reversing lernen möchten, als auch an Leser, die bereits gelernte Konzepte wiederholen wollen
- Anfänger können ohne Vorwissen starten und sich bis zu den mittelstufigen Grundlagen des Reverse Engineerings vorarbeiten
- Über die Sidebar lässt sich nachvollziehen, welche Abschnitte bisher behandelt wurden, und bei Bedarf können Konzepte wiederholt werden
1 Kommentare
Hacker-News-Kommentare
Reverse Engineering ist auch möglich, ohne das Ziel selbst direkt zu untersuchen
Ein Artikel, der erklärt, wie Andrew Tridgell mit der „French cafe technique“ das SMB-Protokoll von Microsoft rückentwickelte: https://www.samba.org/ftp/tridge/misc/french_cafe.txt
Tridge hat auch die proprietäre Software BitKeeper rückentwickelt, die Linus eine Zeit lang zum Hosting der Linux-Kernel-Entwicklung nutzte. Er fand heraus, dass man statt des speziellen Clients per Telnet zu BitKeeper Adresse:Port verbinden und
helpeingeben konnte, woraufhin eine Liste der verfügbaren Befehle ausgegeben wurdeDurch Abfragen des Repositorys mit diesen Befehlen konnte er die internen Datenstrukturen vollständig verstehen, ohne proprietäre Software zu benutzen oder etwas zu disassemblieren. Weil der BitKeeper-Eigentümer Larry McVoy der Linux-Community infolge dieses Reverse Engineerings die Nutzungsrechte entzog, entwickelte Linus schließlich git
Dass
helpeine Befehlsliste ausgab, war eine gute Engineering-/UI-Entscheidung der BitKeeper-Entwickler, aber ich fände es schade, wenn die Lehre daraus am Ende wäre: „Macht Software nicht zu benutzerfreundlich“Außerdem ist es doch offensichtlich auch eine Form der „Nutzung“ von Software, wenn man über das Netzwerk mit ihr spricht
Ich habe Reverse Engineering nie als etwas gesehen, das man aus Büchern lernt. Ich habe mir das seit meiner Jugend komplett durch eigenes Ausprobieren beigebracht
Ich habe gelernt, mit Cheat Engine den Prozessspeicher von Videospielen zu scannen und zu verändern, MMO-Pakete zu lesen und erneut zu senden, um Cheats auszuprobieren, DLLs und Hooks zu bauen und in Prozesse zu injizieren, und Patches für ausführbare Dateien zu erstellen, um crackme-Aufgaben zu lösen
Ich habe echte Software mit Lizenzschlüsseln bearbeitet, damit sie keinen Schlüssel mehr verlangt oder jeden beliebigen akzeptiert, und Binärformate wie Spielstände analysiert, um sie fürs Cheaten zu nutzen. Mit diesen Fähigkeiten und Kenntnissen habe ich am Ende sogar einen echten Job bekommen und damit Geld verdient
In der Praxis ist es eher etwas, bei dem man es einfach selbst versuchen und Zeit investieren muss. Das Tutorial im Original ist zu lückenhaft, versucht zu viel abzudecken und vermittelt dennoch keine Reverse-Engineering-Fähigkeiten, die über das hinausgehen, was man sich nach ein paar Stunden Herumprobieren sowieso aneignet
beginners.re ist dagegen zwar riesig, aber deutlich tiefgehender und schrittweise aufgebaut, und als Übungsaufgaben sind crackmes womöglich besser geeignet
In einem laufenden Reverse-Engineering-Projekt zu einem Videospiel kam ich mit einem autodidaktischen Modder in Kontakt, der nicht programmieren konnte. Nachdem ich ihm in ein paar Discord-Anrufen beim gemeinsamen Blick auf ein Ghidra-Projekt die Grundlagen des Software Engineerings erklärt hatte, lernte er weit mehr als in all der Zeit, in der er nur mit Cheat Engine Bits umlegte
Danach rekonstruierte er einen ziemlich ambitionierten Mod, der vor 15 Jahren nur in einem YouTube-Video gezeigt, aber nie veröffentlicht worden war. Ich habe ihm zwar die Richtung vorgegeben, aber nachdem er verstanden hatte, wie die Teile zusammenspielen, setzte er denselben Mod im Nachfolger sogar allein um
Technische Erfahrung gibt einem beim Reverse Engineering Perspektive
Wichtig ist auch, dass es zwar viele Bücher gibt, aber nur sehr wenige wirklich „gute“
Schon nach fünf Minuten sieht man so viele Fehler, missverstandene Konzepte und völlig falsche Erklärungen, dass ich es nur schwer empfehlen kann. Es wirkt klar wie ein Text von einem Amateur mit wenig Erfahrung in dem Bereich
Besseres Material wäre Eldad Eilams Secrets of Reverse Engineering, für Windows Practical Reverse Engineering, und für die absoluten Grundlagen Pattersons Computer Organization and Design
Für jemanden, der zum ersten Mal mit dem Thema in Berührung kommt, wirkt es wie ein brauchbarer Überblick auf hoher Ebene
Ich hatte auch diesen Link zu tiefergehendem Material: https://github.com/mytechnotalent/Reverse-Engineering
Bearbeitung: Mist, anscheinend führt das meiste davon wieder zurück zum Original
Das erinnert mich daran, wie ich früher Reverse-Engineering-Tutorials auf searchlores.org und fravia.com gelesen habe
Heute liegt das im Webarchiv: https://web.archive.org/web/20191201105759/http://search.lor...
Java-Reverse-Engineering macht auch Spaß, besonders bei dubiosen Android-Apps, die Haushaltsgeräte über seltsame Bluetooth-Protokolle steuern
Ich kenne die Person, die diesen Guide geschrieben hat. Es freut mich, ihn auf HN zu sehen, und falls es konkretes Feedback gibt, kann ich es weitergeben
Es fehlt zu sehr an Elementen, die zur Beteiligung anregen, und an visuellen Materialien. Es gibt zu viele Erklärungen und zu viel Text am Stück; schon deshalb ist es kein Material „für alle“
Zum Beispiel ließe sich die Erklärung von statischer/dynamischer Analyse in Teil 2, die Einführung in IDA und Disassembler sowie die Beschreibung des Szenarios mit ABC Biochemicals viel knapper formulieren
Man könnte es ungefähr auf Folgendes kürzen: „Für die Malware-Analyse gibt es zwei grundlegende Techniken: statische Analyse und dynamische Analyse. Bei der statischen Analyse wird eine ausführbare Datei untersucht, ohne sie auszuführen; das wird hier ausgelassen und später behandelt. Die dynamische Analyse untersucht laufende Malware-Binärdateien mit einem Disassembler und Debugger. Ein Disassembler wandelt ausführbare Binärdateien in Assemblerbefehle um, die sich debuggen und manipulieren lassen. Es gibt Tools wie Hopper, OllyDbg und IDA; IDA ist ein beliebter Disassembler mit Debugger-Unterstützung für viele Plattformen und Prozessoren. Reverse Engineering ist ein viel breiteres Feld als Malware-Analyse. Am Ende wird IDA in einem Szenario verwendet, in dem man ethisch ein kugelsicheres Türsteuerungssystem in einem fiktiven sensiblen Biochemie-Labor namens ABC Biochemicals hackt. Es ist ein einfaches Projekt, zeigt aber, wie man ein Blackbox-Binärprogramm rückentwickelt und Ansätze für sichereres Code-Design findet. In der nächsten Lektion werden verschiedene Malware-Typen behandelt“
Der Buchlink funktioniert bei mir nicht — hat die Seite die HN-Traffic-Bombe abbekommen?