Was soll ich NASM oder MASM zum Lernen der Assembly wählen? Ich möchte Assembly lernen, Motivation ist Reverse Engineering.
Wenn ich also eine ausführbare Datei zerlege, kann ich den Code verstehen, indem ich den disassemblierten Code begutachte.
Update: Ich denke, ich mache mir selbst klar. Ich verstehe, dass das Assembler sind, aber um den Output eines Disassembler zu verstehen, muss ich Assembly kennen und das ist der Grund, warum ich frage, wo ich anfangen soll (mit MASM oder NASM )
Angenommen, Sie möchten das Reverse-Engineering von unter Windows lernen. Der Linux-Weg ist sehr unterschiedlich (obwohl Sie schließlich zu mehr oder weniger dem gleichen Ort kommen):
Sie möchten mit etwas sehr Einfachem wie 8080 Prozessor beginnen. Sie können einen Online-Emulator hier finden: Ссылка - dies ist ein altes Betriebssystem namens "CP / M". Klicken Sie auf den Link "Start EMU8080" - Sie erhalten eine Befehlszeile von "SID" - einem einfachen alten Debugger. Es hat nur 10 Befehle - zum Durchsuchen des Speichers an einer beliebigen Adresse, zum Eingeben neuer Assemblerkommandos usw. Geben Sie HELP ein, um alle zu sehen. Sie können versuchen, Google für ein SID-Handbuch zu googlen, wenn Sie möchten. Dann google für 8080 Montageanleitung - Sie werden eine Reihe von PDFs finden - sie alle Kopien der gleichen 2 Handbücher von Intel in den 1970er Jahren geschrieben werden. Lesen Sie beide - sie geben Ihnen einen guten Einstieg in die Grundlagen der 808x-CPU. Alle modernen Prozessoren, die in PCs verwendet werden, stammen von 8080. Spielen Sie mit SID und 8080, bis Sie das Gefühl haben, die Idee zu verstehen.
Der nächste Schritt ist 8086. Dazu müssen Sie eine Kopie von Window XP erhalten und das DEBUG-Programm in der Befehlszeile ausführen. DEBUG ist Microsofts Abzocke von SID. Es wird sehr einfach zu lernen sein, sobald Sie SID kennen. Die Dokumentation ist hier: Ссылка - lesen Sie so viel wie Sie können, achten Sie auch darauf, den Links zu folgen zu anderen Seiten - die gleiche Seite enthält eine Menge Dinge über die grundlegende 8086-Programmierung. Wenn Sie zu dieser Zeit die 8080 Handbücher verinnerlicht haben, wird 8086 sich superleicht anfühlen. (Wenn Sie die 8080 / SID-Phase überspringen, wird sich alles komisch anfühlen und das Puzzle wird mehr Zeit brauchen, um sich zu vergewissern, vertrau mir.)
Sie können auch mit Ссылка spielen - einem verbesserten Klon von DEBUG, mit dem Sie leichter arbeiten können. p>
Nächster Schritt, ein Buch von Peter Abel namens "IBM PC Assembler Language and Programming" - die ältere Ausgabe, desto besser. Du kannst einen bei Amazon für 1 Dollar finden (ich mache keine Witze!). Lesen Sie die ersten 7 Kapitel. Holen Sie sich Assembler namens "FASM" (MASM und NASM Mist vergessen). Lesen Sie die FASM-Dokumentation. Schreiben Sie ein Programm im 16-Bit-Real-Modus. Sie können sie weiterhin auf der Windows XP-Befehlszeile ausführen.
Nächster Schritt, lesen Ссылка - dies wird Ihnen helfen, den geschützten Modus zu verstehen. Lesen Sie dann die aktuelle Referenzdokumentation zu Intel 386: Ссылка
Dann kaufe ein Buch mit dem Titel "Reversing. Secrets of Reverse Engineering". Es ist ziemlich lahm, aber wird dir einige Ideen geben, was du als nächstes lernen musst. Wie Low-Level-Windows-Programmierung (Nachrichten, Handler etc.)
Wenn du das alles durchgemacht hast, kannst du Ссылка herunterladen und versuchen, damit zu spielen. Achten Sie darauf, Version 1.x, nicht 2.x zu erhalten. Gehe zu Youtube und finde einige Tutorials. Sie können gerne zu diesem Schritt übergehen, aber ich kann Ihnen versichern, dass Sie frustriert werden und nichts verstehen, was Sie auf dem Bildschirm sehen, es sei denn, Sie befolgen alle oben genannten Punkte.
Viel Glück. Wenn Sie Fragen haben, können Sie mich über meinen Blog kontaktieren (der Link befindet sich auf meiner Profilseite).
Sie sprechen hier von Disassemblierung . Die Werkzeuge, die Sie beide aufgelistet haben, sind Assembler , die Ihnen nicht helfen werden, den vorhandenen Code zu verstehen oder zu verstehen. Sie werden jedoch für die Montagephase nützlich sein!
Für die Disassemblierung empfehle ich IDA Pro Es enthält alle Tools, Dokumentation, Plugins und Community-Hilfe, die Sie suchen. Als Bonus sind die älteren Versionen auch kostenlos.
Ich glaube, du hast es rückwärts verstanden. Ich lernte Assembly durch Debuggen der Ausgabe eines Hochsprachencompilers.
Tags und Links c++ assembly x86 reverse-engineering masm