Frage

Ich weiß, dass ausführbare Dateien enthalten Anweisungen, aber was genau sind diese Anweisungen? Wenn ich will, die MessageBox API-Funktion zum Beispiel nennen, was die Anweisung sieht wie?

Danke.

War es hilfreich?

Lösung

Executables Binärdateien sind, die durch das Betriebssystem verstanden werden. Die ausführbare Datei enthält Abschnitte, die Daten in ihnen. Windows verwendet die PE-Format . Das PE-Format hat einen Abschnitt, der hat Maschine Anweisungen. Diese Befehle sind nur Zahlen, die in einer Sequenz geordnet sind, und wird durch die CPU verstanden.

Ein Funktionsaufruf zu MessageBox (), würde eine Folge von Anweisungen sein, die das

1) die Adresse der Funktion, die in einer DLL ist. Diese Adresse wird vom Compiler setzt in

2) Hinweise auf "Push" die Parameter auf einen Stapel

3) Der tatsächliche Funktionsaufruf

4) eine Art Bereinigung (abhängig von der Aufrufkonvention).

Es ist wichtig, sich daran zu erinnern, dass EXE-Dateien werden nur speziell Dateien formatiert. Ich habe nicht für Sie eine Demontage haben, aber Sie können versuchen, Ihren Code kompilieren, dann öffnen Sie die EXE-Datei in Visual Studio, um die Demontage zu sehen.

Andere Tipps

Das ist eine aufgeblähte Frage, ob ich je gesehen habe. ABER, ich werde mein Bestes versuchen, einen Überblick zu geben. In einer binären ausführbaren gibt es diese Dinge „Byte-Codes“, Byte-Codes sind nur die hex represtation einer Anweisung aufgerufen. Häufig können Sie Byte-Codes „nachschlagen“ und wandeln sie in Montageanleitung. Zum Beispiel: Die Anweisung:

mov ax, 2h

Hat die Byte-Code-Darstellung:

B8 02 00

Die Byte-Codes erhalten in den Arbeitsspeicher geladen und durch die processer ausgeführt als dass seine „Sprache“ ist. Niemand sane, dass ich Programme in Bytecode weiß, wäre es nur wayyyy zu kompliziert sein. Die Montage ist ... Spaß genug, wie es ist. Jedes Mal, wenn Sie ein Programm in einer höheren Sprache kompilieren Sie Ihren Code zu nehmen hat und es in Montageanleitung, stellen Sie sich nur, wie verstümmelten Code aussehen würde, nachdem er es kompiliert. Versteh mich nicht falsch, Compiler sind groß, aber ein C ++ Programm mit IDA Pro Freeware zerlegen und Sie werden sehen, was ich rede. Das ist ausführbare Dateien auf dem Punkt gebracht, es gibt sicherlich Bücher zu diesem Thema geschrieben. Ich bin kein Experte Windows-API, aber jemand anderes kann Ihnen zeigen, was der Befehl wie für den Aufruf der Windows-API „MessageBox“ aussehen würde. Es sollte nur ein paar Zeilen der Versammlung sein.

Was den Code geschrieben ist (sei es in C oder einer anderen Sprache) durch einen Compiler auf eine spezielle Art von Sprache namens Assembly kompiliert (na ja, Maschinencode, aber sie sind ganz in der Nähe). Die Montag ist eine sehr niedrige Ebene Sprache, die die CPU nativ ausführt. Normalerweise Du programmiere nicht in der Montage, weil es so mit niedrigem Pegel ist (zum Beispiel, Sie wollen nicht mit dem Ziehen Bits hin und her aus dem Gedächtnis zu tun).

Ich kann zwar nicht sagen, über die MessageBox Funktion, aber ich würde vermuten, dass es ein LOT von Anweisungen. Denken Sie daran: es hat die Box zu ziehen und Stil es aber Ihren Computer Stil es und Haken einen noch Handler so, dass etwas passiert, wenn der Benutzer auf die Schaltfläche klickt, teilt Windows (oder was auch immer Betriebssystem), um das hinzuzufügen Taskleiste (oder Dock, etc), und so viele andere Dinge.

Es hängt von der Sprache, die in dem Sie arbeiten. Aber für viele ist es so einfach wie ...

msgbox("Your message goes here")

oder

alert("Your message goes here")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top