Privacy Policy Cookie Policy Terms and Conditions COM-Datei - Wikipedia

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.

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu