Viral programs have a long, and sometimes honourable, history. (I do not intend, by this statement, to be involved in the current debate about whether or not viral programs serve a useful purpose outside research environments.)
In the earliest computers it was vital that you knew the initial state of the computer. It was also important that no remnants of other programs remain. (It is hard enough to debug programs now: you don’t need extraneous “noise” to deal with.) An instruction was often implemented that had only one function: it would copy itself to the next memory location and then proceed on to that location. Thus, by starting this instruction at the beginning of memory, the entire memory space could be “filled” with a known value. This single instruction could be seen as the first viral type program.
As computers progressed, it became possible to run more than one program at a time in a single machine. It was, of course, important that each program, and its associated data, be contained within certain bounds, or partitions. Inevitably, there were programs which “broke the bounds”, and would either perform operations on the data or programs belonging to different procedures, or actually transferred control to random areas and tried to execute data as program instructions. Random operations and damage would result. Attempts to trace the “path” of damage or operation would show “random” patterns of memory locations. Plotting these on a printout map of the memory looks very much like the design of holes in “worm-eaten” wood: irregular curving traces which begin and end suddenly. The model became known as a “wormhole” pattern, and the rogue programs became known as “worms”. In an early network of computers a similar program, the infamous “Xerox worm”, not only broke the bounds within its own computer, but spread from one computer to another. This has led to the use of the term “worm” to differentiate a viral program that spreads over networks from other types. The term is sometimes also used for viral programs which spread by some method other than attachment to, or association with, program files.
(Programmers being who they are, the development of such rogue programs became a sport. This is now enshrined in the game of “Core Wars”. A program is run which “simulates” a computer environment. A standard set of instructions, known as “Redstone code”, is used to build programs which battle each other within the simulated environment. The objective is survival. The use of such tactics as attack, avoidance and replication is of interest to virus research, as is the trade-off between complexity of design and chance of destruction.)
Robert M. Slade’s history is available here with permission of Robert M. Slade. Please do not further use the material without obtaining your own permission to use it.
Robert Slade Computer Virus History | |
Robert Slade Computer Virus History | Chapter 2 Early Related |