COM file - Gardening

Gardening Encyclopedia
 
 

COM file

In MS-DOS and compatible DOSes, a COM file is a simple type of executable file with the file name extension .com (not to be confused with the .com top-level domain). The format is still executable on modern Windows-based platforms, but it is run in an MS-DOS-emulating subsystem. Originally the COM was short for "command" as these .com files contained the code for the basic commands that could be run on the machine.

Many shell utilities such as the MS-DOS version of more used this format, as well as small, early applications such as the IBM game Alley Cat.

Binary format

The COM format is perhaps the simplest executable format of all; it contains no metadata, only code and data, and is loaded at address 100h of some segment and executed. Because of how the segmentation model works, there's no need for relocation.

Its simplicity exacts a price, however: the binary has a maximum size of 65,280 (FF00h) bytes and stores all its code and data in one segment. This was not an issue on early 8-bit machines, but it is the main reason why the format fell into disuse soon after the introduction of 16- and then 32-bit processors with their much larger, segmented memories.

On an 8-bit machine, only 65,536 bytes of memory can be addressed (address range 0000h to FFFFh). In early operating systems like CP/M and MS-DOS, the first page of this memory, from 0000h to 00FFh was reserved for system use, and any user program had to be loaded at exactly 0100h to be executed. COM files fitted this model perfectly. Note that there was no possibility of running more than one program or command at a time: the program loaded at 0100h was run, and no other.

Execution preference

If a directory contains both a COM file and an EXE file with same extension, the COM file is preferred. For example, if a directory contains two files named foo.com and foo.exe, the following would execute foo.com:

C:\>foo

If the user wishes to run foo.exe, then can explicitly use the complete filename:

C:\>foo.exe

Taking advantage of this default behaviour, virus writers and other malicious programmers sometimes use names like notepad.com for their creations. Their hope is that, if it is placed in the directory of the corresponding EXE file, that a run command or batch file may accidentally one day trigger their program instead of the ubiquitous notepad.exe text editor.

Malicious use

Some recent computer virus writers have hoped to capitalise on modern computer users' likely lack of knowledge of the COM command-file format, along with their more likely familiarity with dot-com Internet domain names. E-mails have been sent with an attachment named along the lines of "www.free-gift.com". Unwary Microsoft Windows users who clicked on the attachment would not be visiting a web site at http://www.free-gift.com/, but rather would find themselves running a carefully-crafted, and probably malicious, binary command called www.free-gift and giving it full permission to do to their machine whatever its author had in mind.

Note that there is nothing malicious about the COM file format itself. This example highlights an unintended name collision between .com command files and, a decade or more later, .com commercial web sites.

08-19-2006 11:17:08

The contents of this article are licensed from Wikipedia.org under the
GNU Free Documentation License. How to view transparent copy
Home Legal Information