psoul's exzellente Post-Antworten auf Ihre Frage, damit ich seine gute Arbeit nicht wiederholen kann, aber ich denke, es würde helfen zu erklären, warum dies sofort eine vollkommen gültige, aber auch schrecklich dumme Frage ist. Immerhin ist dies ein Ort zum Lernen, oder?
Moderne Computerprogramme werden durch eine Reihe von Konvertierungen erzeugt, beginnend mit der Eingabe eines für Menschen lesbaren Textinhalts (als "Quellcode" bezeichnet) und endend mit einem computerlesbaren Befehlskörper (alternativ als "binär" oder "Maschine" bezeichnet) Code").
Die Art und Weise, wie ein Computer eine Reihe von Maschinencode-Anweisungen ausführt, ist letztendlich sehr einfach. Jede Aktion, die ein Prozessor ausführen kann (z. B. aus dem Speicher lesen, zwei Werte hinzufügen), wird durch einen numerischen Code dargestellt. Wenn ich Ihnen sagen würde, dass die Nummer 1 Schreien und die Nummer 2 Kichern bedeutet und dann Karten mit 1 oder 2 hochhalten würde, die erwarten, dass Sie entsprechend schreien oder kichern, würde ich das gleiche System verwenden, das ein Computer verwendet zu bedienen.
Eine Binärdatei ist nur ein Satz dieser Codes (normalerweise "Op-Codes" genannt) und der Informationen ("Argumente"), auf die die Op-Codes einwirken.
Assemblersprache ist jetzt eine Computersprache, in der jedes Befehlswort in der Sprache genau einen Operationscode auf dem Prozessor darstellt. Es gibt eine direkte 1: 1-Übersetzung zwischen einem Assembler-Befehl und einem Prozessor-Op-Code. Aus diesem Grund unterscheidet sich die Codierungsbaugruppe für einen x386-Prozessor von der Codierungsbaugruppe für einen ARM-Prozessor.
Die Demontage ist einfach so: Ein Programm liest die Binärdatei (den Maschinencode) durch, ersetzt die Operationscodes durch die entsprechenden Assembler-Befehle und gibt das Ergebnis als Textdatei aus. Es ist wichtig, das zu verstehen; Wenn Ihr Computer die Binärdatei lesen kann, können Sie die Binärdatei auch lesen, entweder manuell mit einer Op-Code-Tabelle in der Hand (ick) oder über einen Disassembler.
Disassembler haben einige neue Tricks und alles, aber es ist wichtig zu verstehen, dass ein Disassembler letztendlich ein Such- und Ersetzungsmechanismus ist. Deshalb bläst jede EULA, die dies verbietet, letztendlich heiße Luft. Sie können nicht sofort zulassen, dass der Computer die Programmdaten liest, und Sie können dem Computer auch nicht verbieten, die Programmdaten zu lesen.
(Versteh mich nicht falsch, es gab Versuche, dies zu tun. Sie funktionieren genauso gut wie DRM für Songdateien.)
Der Demontageansatz weist jedoch einige Einschränkungen auf. Variablennamen sind nicht vorhanden. So etwas gibt es in Ihrer CPU nicht. Bibliotheksaufrufe sind höllisch verwirrend und erfordern oft das Zerlegen weiterer Binärdateien. Und Montage ist unter den besten Bedingungen schwer zu lesen.
Die meisten professionellen Programmierer können die Assemblersprache nicht ohne Kopfschmerzen lesen. Für einen Amateur wird es einfach nicht passieren.
Wie auch immer, dies ist eine etwas beschönigte Erklärung, aber ich hoffe, es hilft. Jeder kann meine falschen Angaben korrigieren. Es ist eine Weile her. ;)