A piece of software that attaches itself to computer programs; viruses replicate and typically have a payload