Aufbau von exe-Dateien

hi,
es gibt ja progs (z.b. 7-Zip) die selbstständig exe-dateien machen. ich frage mich, wie das geht, bzw. auf welchen gundsätzen eine exe - datei aufbaut und ob man auch welche z.b. mit notepad selbermachen kann. ich sehe da nur ein gewirr aus zahlen und buchstaben.

vielen dank schon mal im voraus fürs antworten
j.

MOD: Titel für die Archivsuche korrigiert

gibt’s das auch auf deutsch???

grüssse
j.

gibt’s das auch auf deutsch???

grüssse
j.

Hallo Jonas,

vielleicht kommst du damit weiter: http://www.deinmeister.de/w32asm5.htm. Im übrigen wirst du an Englisch nicht vorbeikommen, wenn du dir Kenntnisse auf dem Gebiet der Programmierung aneignen willst, zum Eintieg empfiehlt sich aber vielleicht doch eine etwas anspruchslosere Lektüre :wink:

Gruß
Martin

P.S.: Im ViKa-Link auf deine HP fehlt ein „e“ in freen e t.

es gibt ja progs (z.b. 7-Zip) die selbstständig exe-dateien
machen. ich frage mich, wie das geht, bzw. auf welchen
gundsätzen eine exe - datei aufbaut und ob man auch welche
z.b. mit notepad selbermachen kann. ich sehe da nur ein gewirr
aus zahlen und buchstaben.

Hi Jonas,
vielleicht hilft dir das weiter:

http://www.wotsit.org/

M.W., kann das auch mit .com verwechseln, haben Exe-Dateien einen Header, also die ersten k,A 2000 Bytes haben festgelegte Bedeutungen. Danach kommt der eigentliche Programmcode in Assemblersprache.
d,h, wenn du in einem Hochprogramm wie C; Basic o.ä. schreibst
Circle 100,50,70
so entsteht ein Kreis an der auf den Bildschirm bezogenen Stelle die den X-Wert 100 hat, den Y-wert 50 und den radius 70 hat Bildschirmpunkte).
das wird dann in Assembler umgesetzt und die Bytefolge in der Exe für diesen Befehl lautet dann
70,20,100,34,56, oder sowas.
Für dich wirre zeichen, aber der PC weiß was er damit machen soll und zeichnet den Kreis.
Gruß
Reinhard

ich glaub, das is mir alles ein bisschen zu kompliziert…
und eigentlich gings mir ja nur darum wie sowas ungefähr aufgebaut is.

grüssse
j.

Hallo j.,

es gibt ja progs (z.b. 7-Zip) die selbstständig exe-dateien
machen. ich frage mich, wie das geht, bzw. auf welchen
gundsätzen eine exe - datei aufbaut und ob man auch welche
z.b. mit notepad selbermachen kann. ich sehe da nur ein gewirr
aus zahlen und buchstaben.

Also prinzipiell sind das etwa 3 Fragen.

Mit Notepad geht das nicht, da du nicht alle möglichen Zeichen eingeben kannst und das Ganze auch sehr unübersichlich wäre. Zum erstellen verwendet man spezille Programm, Linker oder Binder, welche die ganzen Informationen erstellen.

Grundsätzlich gibt es zwei unterschiedliche Formen .COM und .EXE.
.COM ist das einfachste Format. Eigentlich ist es ein Speicherabbild und wird beim Start ab der Adresse 0100h geladen und der Programm-Einsprung befindet sich immer auch an Adresse 0100h (wenn ich mich jetzt nicht irre, ist schon länger her). Im Priztip ist ein .COM-Programm auf 64KiByte beschränkt.

Das .EXE-Format ist komplexer. Das Programm liegt in einer Form vor, welche eigentlich nur an der Adresse 0 geladen funktioniert. Damit es an aber an jede Speicherstelle geladen werden kann, gibt es in der Datei Tabellen, welche angeben, welche Bytes in der Datei korrigiert werden müssen, damit das Programm an einer beliebigen Stelle im Speicher ausgeführt werden kann. ImPrinzip muss der Loader, also derjenige Teil des Betriebssystems welcher eine .EXE in den Speicher lädt und startet, zu den, in der Tabelle, angegebenen Stellen einfach nur den Wert der tatsächlichen Ladeadresse hunzuaddieren. Zudem ist noch angegeben wie gross der Stack sein muss und die Grösse des benötigten Datenbereichs. Dann gibt es, je nach -EXE-Format, noch angaben über benötigte Bibliotheken.
Mit Windows hat man ein neues Format für eine .EXE eingeführt. Vorne liegt eine Block mit einer „normalen .EXE“, so wie sie DOS auch kennt. Hinter diesem Block liegt dann die eigentliche EXE für Windows. Dadurch kannst du ein Windows-Programm auch unter DOS starten, allerdings gibt das DOS-Programm nur eine Meldungs aus, dass dieses Programm nur unter Win lauffähig ist, dass da ein weiterer Block dahinter liegt, weiss DOS gar nicht.
ImPrinzip kann man eine DOS-Version und eine Win-Version eines Programms in eine einzige EXE-Datei packen.

SO, jetzt kommen wir zu deiner Frage mit selbstentpackenden Archiven.
Hier wird einfach das Archiv hinter die EXE gehängt. Der Loader lädt nur den Ihm bekannten Teil in den Speicher und ignoriert zusätzliche Daten einfach.

Eine Kleinigkeit hab ich noch vergessen: Das Betriebssystem gibt jeden Programm den Pfad und seinen Dateinamen mit, wenn es gestartet wird. Somit kann dann der Archiventpacker seine eigene Datei öffnen und das Archiv entpacken, welches hinter seinem Code steht.

Uff, ist jetzt doch etwas lang geworden obwohl ich nur das prinzipielle geschrieben habe.

MfG Peter(TOO)

Uff, ist jetzt doch etwas lang geworden obwohl ich nur das
prinzipielle geschrieben habe

war es eine freude die Agenda der COM EXE ,von Dir so detailreich und doch verständlich gehalten, lesen zu dürfen.

MfG Peter(TOO)

Hallo fragewurm,

Uff, ist jetzt doch etwas lang geworden obwohl ich nur das
prinzipielle geschrieben habe

war es eine freude die Agenda der COM EXE ,von Dir so
detailreich und doch verständlich gehalten, lesen zu dürfen.

Merci, und erst noch alles freiköpfig, also ohne irgendwo nachzuschlagen :wink:

MfG Peter(TOO)

Hallo Peter,

auch von mir einen (*) und ein Kompliment für die gute
Erklärung.

Es ist zwar ganz nett, wenn man mit Links überhäuft wird,
die dann Seiten lang jedes Bit einzeln erklären, aber für
den interessierten Leser, der sich nur mal schnell einen
Überblick verschaffen möchte, war Deine Antwort mit Abstand
die beste :wink:

Gruß,
-Andreas.

danke, danke…

danke, danke…

Bitte, die Tippfehler darfst du sogar behalten :wink:

MfG Peter(TOO)