COM-Datei
aus Wikipedia, der freien Enzyklopädie
Unter MS-DOS und kompatiblen DOSes und unter 8-Bit CP/M ist eine COM-Datei eine einfache Art von ausführbaren Dateien. Der Name des Dateiformates leitet sich von der ursprünglichen Dateinamenserweiterung dieses Dateiformates .com her (nicht zu verwechseln mit der Top Level Domain .com), benannt nach dem engl. Wort command (Befehl, Kommando). Diese Dateien tragen jedoch nur unter CP/M und frühen Versionen von MS-DOS diese Dateinamenserweiterung.
Inhaltsverzeichnis |
[Bearbeiten] Plattform-Unterstützung
Das Format ist auf vielen modernen Windows-basierten Plattformen weiterhin ausführbar, wird jedoch in einer MS-DOS-Emulationsschicht ausgeführt, die bei den x64-Varianten fehlt.
COM-Dateien können auch über DOS-Emulatoren wie DOSBox auf jeglichen von diesen Emulatoren unterstützten Plattformen ausgeführt werden. Ursprünglich stand COM als Kürzel für "command", engl. für Befehl / Kommando, da diese Dateien den Code für die grundlegenden auf der Maschine ausführbaren Befehle enthielten.
Viele Shell-Werkzeuge wie die MS-DOS Version von more
nutzten dieses Format wie auch kleine, frühe Anwendungen wie das Spiel Alley Cat von IBM.
[Bearbeiten] Binärformat
Das COM-Format ist vielleicht das einfachste Format ausführbarer Dateien überhaupt; es enthält kein Metadaten – nur Code und Daten – und wird an Offset 0x0100 eines Segmentes geladen und ausgeführt. Durch die Art nach der das Segmentierungsmodell arbeitet ist keine Relocation vonnöten.
Die Einfachheit hat jedoch ihren Preis: Die Dateien sind beschränkt auf Größen von maximal 65,280 (0xFF00) Bytes und speichert jeglichen Code und Daten in einem Segment. Dies stellte auf 8-Bit-Architekturen kein Problem dar, ist jedoch der Hauptgrund warum das Format nach der Einführung von 16- und später 32-Bit-Architekturen mit ihren weitaus größeren segmentierten Speichern bald aus der Mode kam.
In Intel 8080-CPU-Architekturen können nur 65,536 Bytes Speichers adressiert werden (Addressbereich 0x0000 bis 0xFFFF). Unter CP/M war die erste Seite dieses Speichers (0x0000 bis 0x00FF) vom System reserviert und jegliche Anwendungsprogramme mussten exakt an Adresse 0x0100 geladen werden um ausgeführt zu werden. COM-Dateien eigneten sich perfekt für dieses Modell. Es ist anzumerken, dass es nicht möglich war mehr als ein(en) Programm oder Befehl gleichzeitig auszuführen, nur das an 0x0100 geladene Programm kam zur Ausführung.
Obwohl das Dateiformat unter MS-DOS und CP/M das selbe ist, können die Programme eines der Systeme nicht unter dem jeweils anderen ausgeführt werden, da MS-DOS-Programme x86-Anweisungen enthielten während es bei CP/M-Programmen Befehle für 8080, 8085 oder Z80 waren. Zusätzlich weisen MS-DOS-Programme oft Abhängigkeiten gegenüber Eigenheiten des OS, die MS-DOS exklusiv über Interrupt 21h zur Verfügung stellt. Es ist möglich Fat-COM-Datei zu erstellen, die auf beiden Prozesorfamilien läuft.
Die Dateinamenserweiterung .com wird auch für Dateien verwendet, die nicht obiges einfaches Format haben. Das wird angezeigt durch eine Magische Zahl am Anfang der Datei. Sind die ersten beiden Bytes 0x4D5A (MZ, die Initialien von Mark Zbikowski), so handelt es sich um eine DOS executable, die Datei COMMAND.COM von DR-DOS 6 ist ein Beispiel. Ist das erste Byte 0xC9 so zeigt dies unter CP/M 3 das Vorhandensein eines 256 Byte-Headers an; da 0xC9 der 8080-Befehl für RET
ist, wird die COM-Datei automatisch sofort beendet, wenn sie auf einer früheren Version von CP/M ausgeführt wird, die diese Erweiterung nicht unterstützt.
[Bearbeiten] Vorrang bei der Ausführung
Finden sich in einem Ordner sowohl eine .com als auch eine .exe Datei gleichen Namens, so wird die .com-Datei vorgezogen. Wird die Ausführung der .exe-Datei gewünscht, so kann das durch die Angabe des gesamten Dateinamens mit der Erweiterung explizit erzwungen werden. (Beispiel: Liegt unter C:\ sowohl eine foo.com als auch eine foo.exe, so startet C:\>foo
die Datei foo.com
und C:\>foo.exe
die .exe-Datei).
Schöpfer von Computerviren versuchen manchmal dieses Verhalten zu nutzen indem sie ihren Kreationen Namen wie notepad.com
geben und darauf spekulieren, dass – im gleichen Ordner wie eine korrespondierende .exe-Datei platziert – eines Tages ein Batch-Skript oder Ausführen-Befehl anstatt des allgegenwärtigen Originals notepad.exe
die Ausführung ihres Programmes auslöst.
[Bearbeiten] Missbrauch
Manche neuere Macher von Computerviren versuchen das wahrscheinliche Fehlen von Wissen über das COM-Dateiformat und die wahrscheinlichere Vertrautheit mit .com-Internetdomains bei heutigen Computernutzern auszunutzen, indem sie ihre Programme www.(...).com nennen. Wird eine solche Datei als E-Mail versandt wird dem unbedarften Windowsnutzer ein Link nach dem Muster "www.free-gift.com", die dann entgegen seinen Erwartungen nicht (oder nicht nur) die Seite www.free-gift.com
öffnet sondern die Datei www.free-gift
ausführt.
Bleibt anzumerken, dass in dem COM-Dateiformat selber keine Bösartigkeit liegt. Sie kommt nur durch die Ausnutzung einer unvorhergesehenen Namenskollision zwischen dem .com (von command) auf das COM-Dateien enden und dem .com (von commercial) kommerzieller Websites zustande.