6 Punkte von GN⁺ 2024-07-26 | 1 Kommentare | Auf WhatsApp teilen
  • 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

Verfügbare Formate

  • Das komplette Tutorial-Set ist auch als E-Book erhältlich
  • Wenn neue Tutorials hinzugefügt werden, werden auch die E-Book-Versionen automatisch aktualisiert

1 Kommentare

 
GN⁺ 2024-07-26
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 help eingeben konnte, woraufhin eine Liste der verfügbaren Befehle ausgegeben wurde
    Durch 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

    • Man muss Linus’ Nutzung von BitKeeper nicht unbedingt als „dumm“ sehen. Er hat damals wohl einfach das beste verfügbare Werkzeug gewählt; ob es objektiv das absolut beste war, weiß ich nicht, aber Linus hat mehrere Tools geprüft und bewertet
      Dass help eine 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
    • Andrew hat uns damit nicht nur einmal, sondern zweimal gerettet. Es braucht nicht nur Leute, die Tore schießen, sondern auch solche, die den entscheidenden Pass spielen
    • Ich erinnere mich noch daran, wie ich als Student zufällig direkt von Tridge in der Mensa unseres Fachbereichs die BitKeeper/git-Geschichte erzählt bekam
  • 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

    • Ich habe Reverse Engineering auch gelernt, indem ich als Jugendlicher viel zu lange auf CE/IDA gestarrt habe, daher habe ich keine besonders gute Antwort, wenn jemand fragt, wie man es am besten lernt
      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
    • Man kann direkt mit Reverse Engineering anfangen, aber ohne technischen Hintergrund — ob durch formale Ausbildung oder im Selbststudium — ist es deutlich schwieriger
      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
    • Die Wirkung von strukturiertem Lernen und wiederholten Übungen wird stark unterschätzt. Kritisches Denken, Neugier und Leidenschaft lassen sich schwer vermitteln, aber ein gut geschriebenes Buch kann die für Versuch und Irrtum nötige Zeit auf ein vernünftiges Maß reduzieren
      Wichtig ist auch, dass es zwar viele Bücher gibt, aber nur sehr wenige wirklich „gute“
    • Ich habe Kochen auch nie als etwas betrachtet, das man aus Büchern lernt
  • 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

    • Secrets of Reverse Engineering ist von 2005; gibt es ein neueres Buch, das ihr empfehlen würdet?
  • 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 wünschte, es gäbe für Java ein Pendant zu DnSpyEx. Ich warte darauf, dass Recaf4 fertig wird
  • 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“

    • Dass der Text überhaupt geschrieben wurde, ist lobenswert, aber ich hatte ein ähnliches Gefühl. Die Sätze sind zu lang und weitschweifig, dadurch ist er schwer zu lesen
      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?