计算机病毒

电脑病毒（computer virus），或称电子计算机病毒。是一种在人为或非人为的情况下产生的、在用户不知情或未批准下，能自我复制或运行的电脑程序；电脑病毒往往会影响受感染电脑的正常运作，或是被控制而不自知，电脑正常运作仅盗窃数据、或者被利用做其他用途等用户非自发引导的行为。

病毒作者

有不少病毒制作者黑客们被逮捕并予以起诉，判决的轻重各国都有所不同，如罗马尼亚西欧班尼花费15分钟写的MSBlast.F变种大约只感染了1000台计算机，按他们国家的法律他就有可能最高会被判15年有期徒刑。1998年台湾病毒作者陈盈豪写的CIH病毒据猜测造成全球600万台计算机瘫痪，但他因为在被逮捕后无人起诉而免于法律制裁，在2001年有人以CIH受害者的身份起诉陈盈豪，才使他再次被逮捕，按照台湾当时的法律，他被判损毁罪面临最高3年以下的有期徒刑。
中国大陆的木马程序“证券大盗”作者张勇因使用其木马程序截获股民账户密码，盗卖股票价值1141.9万元人民币，非法获利38.6万元人民币，最终的判决结果是无期徒刑。
一公司的分析报告称：当前全世界现有200万有能力写较成熟电脑病毒的程序员。

学术工作

第一份关于计算机病毒理论的学术工作（虽然"病毒"一词在当时并未使用）于 1949年由约翰·冯·诺伊曼完成。当时是以"Theory and Organization of Complicated Automata"为题的一场在伊利诺伊大学的演讲，稍后改以"Theory of self-reproducing automata"为题出版。冯·诺伊曼在他的论文中描述一个计算机程序如何复制其自身。
1972年，Veith Risak根据冯·诺伊曼在自我复制上的工作为基础发表"Self-reproducing automata with minimal information exchange"一文。该文描述一个以西门子4004/35计算机系统为目标，用汇编语言编写，具有完整功能的计算机病毒。
1980年，Jürgen Kraus于多特蒙德大学撰写他的学位论文"Self-reproduction of programs"。在他的论文中，他假设计算机程序可以表现出如同病毒般的行为。
“病毒”一词最早用来表达此意是在弗雷德·科恩（Fred Cohen）1984年的论文《电脑病毒实验》。

科幻小说

而病毒一词广为人知是得力于科幻小说。一部是1970年代中期大卫·杰洛德（David Gerrold）的《When H.A.R.L.I.E. was One》，描述了一个叫“病毒”的程序和与之对战的叫“抗体”的程序；另一部是约翰·布鲁勒尔（John Brunner）1975年的小说《震荡波骑士（ShakewaveRider）》，描述了一个叫做“磁带蠕虫”、在网络上删除数据的程序。

病毒程序

1960年代初，美国麻省理工学院的一些青年研究人员，在做完工作后，利用业余时间玩一种他们自己创造的计算机游戏。做法是某个人编制一段小程序，然后输入到计算机中运行，并销毁对方的游戏程序。而这也可能就是计算机病毒的雏形。

感染策略

为了能够复制其自身，病毒必须能够运行代码并能够对内存运行写操作。基于这个原因，许多病毒都是将自己附着在合法的可执行文件上。如果用户企图运行该可执行文件，那么病毒就有机会运行。病毒可以根据运行时所表现出来的行为分成两类。非常驻型病毒会立即查找其它宿主并伺机加以感染，之后再将控制权交给被感染的应用程序。常驻型病毒被运行时并不会查找其它宿主。相反的，一个常驻型病毒会将自己加载内存并将控制权交给宿主。该病毒于背景中运行并伺机感染其它目标。

非常驻型病毒

非常驻型病毒可以被想成具有搜索模块和复制模块的程序。搜索模块负责查找可被感染的文件，一旦搜索到该文件，搜索模块就会引导复制模块进行感染。

常驻型病毒

常驻型病毒包含复制模块，其角色类似于非常驻型病毒中的复制模块。复制模块在常驻型病毒中不会被搜索模块调用。病毒在被运行时会将复制模块加载内存，并确保当操作系统运行特定动作时，该复制模块会被调用。例如，复制模块会在操作系统运行其它文件时被调用。在这个例子中，所有可以被运行的文件均会被感染。常驻型病毒有时会被区分成快速感染者和慢速感染者。快速感染者会试图感染尽可能多的文件。例如，一个快速感染者可以感染所有被访问到的文件。这会对杀毒软件造成特别的问题。当运行全系统防护时，杀毒软件需要扫描所有可能会被感染的文件。如果杀毒软件没有察觉到内存中有快速感染者，快速感染者可以借此搭便车，利用杀毒软件扫描文件的同时进行感染。快速感染者依赖其快速感染的能力。但这同时会使得快速感染者容易被侦测到，这是因为其行为会使得系统性能降低，进而增加被杀毒软件侦测到的风险。相反的，慢速感染者被设计成偶而才对目标进行感染，如此一来就可避免被侦测到的机会。例如，有些慢速感染者只有在其它文件被拷贝时才会进行感染。但是慢速感染者此种试图避免被侦测到的作法似乎并不成功。

传播途径和宿主

由于世界操作系统桌面环境90%的市场都是使用微软Windows系列产品，
所以病毒作者纷纷把病毒攻击对象选为Windows。制作病毒者首先应该确定要攻击的操作系统版本有何漏洞，这才是他所写的病毒能够利用的关键。Windows当时并没有有效的安全与防御功能，且用户常以管理员权限运行未经安全检查的软件，这也为Windows下病毒的泛滥提供了温床。Linux、Mac OS等操作系统，因使用的人群比较少，病毒一般不容易扩散。大多病毒发布作者的目的有多种，包括恶作剧、想搞破坏、报复及想出名与对研究病毒有特殊嗜好。
病毒主要通过网路浏览以及下载，电子邮件以及可移动磁盘等途径迅速传播。

隐蔽

病毒会借由拦截杀毒软件对操作系统的调用来欺骗杀毒软件。当杀毒软件要求操作系统读取文件时，病毒可以拦截并处理此项要求，而非交给操作系统运行该要求。病毒可以返回一个未感染的文件给杀毒软件，使得杀毒软件认为该文件是干净未被感染的。如此一来，病毒可以将自己隐藏起来。现在的杀毒软件使用各种技术来反击这种手段。要反击病毒匿踪，唯一完全可靠的方法是从一个已知是干净的介质开始引导。

自修改

大部分杀毒软件透过所谓的病毒特征码来侦知一个文件是否有被感染。特定病毒，或是同属于一个家族的病毒会具有特定可识别的特征。如果杀毒软件侦测到文件具有病毒特征码，它便会通知用户该文件已被感染。用户可以删除或是修复被感染的文件。某些病毒会利用一些技巧使得透过病毒特征码进行侦测较为困难。这些病毒会在每一次感染时修改其自身的代码。换言之，每个被感染的文件包含的是病毒的变种。只能重灌或下载杀毒软件.

随机加密

胡搞更甚者是对病毒本身进行简单的加密。这种情况下，病毒本身会包含数个解密模块和一份被加密的病毒拷贝。如果每一次的感染，病毒都用不同的密钥加密，那病毒中唯一相同的部分就只有解密模块，常会附于文件尾端。杀毒软件无法直接透过病毒特征码侦测病毒，但它仍可以侦知存在解密模块，这就可以间接侦测病毒。因为这部分是存放在宿主上面的对称式密钥，杀毒软件可以利用密钥将病毒解密，但这并不必要。因为自修改代码很少见，杀毒软件可以先将这类文件标记成可疑。
一个古老但简洁的加密技术将病毒中每一个字节和一个常量做逻辑异或，欲将病毒解密只需简单的逻辑异或。一个程序若可修改自身代码就十分可疑，因此许多病毒定义中，将加解密部分视为病毒特征码的一部分。

多态

多态是第一个对杀毒软件造成严重威胁的技术。就像一般被加密的病毒，一个多态病毒以一个加密的自身拷贝感染文件，并由其解密模块加以解码。但是其加密模块在每一次的感染中也会有所修改。因此，一个仔细设计的多态病毒在每一次感染中没有一个部分是相同的。这使得使用病毒特征码进行侦测变得困难。杀毒软件必须在一模拟器上对该病毒加以解密进而侦知该病毒，或是利用加密病毒其统计模板上的分析。要使得多态代码成为可能，病毒必须在其加密处有一个多态引擎（又称突变引擎）。关于多态引擎的技术细节请参阅Polymorphic code。
有些多态病毒会限制其突变的速率。例如，一个病毒可能随着时间只有一小部分突变。或是病毒侦知宿主已被同一个病毒感染，它可以停止自己的突变。如此慢速的突变其优点在于，杀毒专家很难得到该病毒具有代表性的样本。因为在一轮感染中，诱饵文件只会包含相同或是近似的病毒样本。这会使得杀毒软件侦测结果变得不可靠，而有些病毒会躲过其侦测。

变形

为了避免被杀毒软件模拟而被侦知，有些病毒在每一次的感染都完全将其自身改写。利用此种技术的病毒被称为可变形的。要达到可变形，一个变形引擎是必需的。一个变形病毒通常非常庞大且复杂。举例来说，Simile病毒包含14000行汇编语言，其中90%都是变形引擎。

特征

在计算机科学里，电脑病毒是类似生物病毒一样的程序，它会复制自己并传播到其他宿主，并对宿主造成损害。宿主也是程序，通常是操作系统，从而进一步传染到其他程序、其他的电脑。电脑病毒在传播期间一般会隐蔽自己，由特定的条件触发，并开始产生破坏。
电脑病毒具有的不良特征有传播性、隐蔽性、感染性、潜伏性、可激发性、表现性或破坏性，通常表现两种以上所述的特征就可以认定该程序是病毒。
计算机病毒的生命周期为开发期→传染期→潜伏期→发作期→发现期→消化期→消亡期。

传播性

病毒一般会自动利用电子邮件传播，利用对象为某个漏洞。将病毒自动复制并群发给存储的通讯录名单成员。邮件标题较为吸引人点击，大多利用社会工程学如“我爱你”这样家人朋友之间亲密的话语，以降低人的警戒性。如果病毒制作者再应用脚本漏洞，将病毒直接嵌入邮件中，那么用户一点邮件标题打开邮件就会中病毒。

隐蔽性

一般的病毒仅在数KB左右，这样除了传播快速之外，隐蔽性也极强。部分病毒使用“无进程”技术或插入到某个系统必要的关键进程当中，所以在任务管理器中找不到它的单独运行进程。而病毒自身一旦运行后，就会自己修改自己的文件名并隐藏在某个用户不常去的系统文件夹中，这样的文件夹通常有上千个系统文件，如果凭手工查找很难找到病毒。而病毒在运行前的伪装技术也不得不值得我们关注，将病毒和一个吸引人的文件绑扎合并成一个文件，那么运行正常吸引他的文件时，病毒也在我们的操作系统中悄悄的运行了。

感染性

某些病毒具有感染性，比如感染中毒用户计算机上的可执行文件，如exe、bat、scr、com格式，通过这种方法达到自我复制，对自己生存保护的目的。通常也可以利用网络共享的漏洞，复制并传播给邻近的计算机用户群，使邻里通过路由器上网的计算机或网吧的计算机的多台计算机的程序全部受到感染。

电脑病毒潜伏性

部分病毒有一定的“潜伏期”，在特定的日子，如某个节日或者星期几按时爆发。如1999年破坏№BIOS的CIH病毒就在每年的4月26日爆发。如同生物病毒一样，这使电脑病毒可以在爆发之前，以最大幅度散播开去。

可激发性

根据病毒作者的“需求”，设置触发病毒攻击的“玄机”。如CIH病毒的制作者陈盈豪曾打算设计的病毒，就是“精心”为简体中文Windows系统所设计的。病毒运行后会主动检测中毒者操作系统的语言，如果发现操作系统语言为简体中文，病毒就会自动对计算机发起攻击，而语言不是简体中文版本的Windows，那么你即使运行了病毒，病毒也不会对你的计算机发起攻击或者破坏。

表现性

病毒运行后，如果按照作者的设计，会有一定的表现特征：如CPU占用率100%，在用户无任何操作下读写硬盘或其他磁盘数据，蓝屏死机，鼠标右键无法使用等。但这样明显的表现特征，反倒帮助被感染病毒者发现自己已经感染病毒，并对清除病毒很有帮助，隐蔽性就不存在了。

分类

病毒类型根据中国国家计算机病毒应急处理中心发表的报告统计，占近45%的病毒是木马程序，蠕虫占病毒总数的25%以上，占15%以上的是脚本病毒，其余的病毒类型分别是：文件型病毒、破坏性程序和宏病毒。

免杀技术以及新特征

免杀是指：对病毒的处理，使之躲过杀毒软件查杀的一种技术。通常病毒刚从病毒作者手中传播出去前，本身就是免杀的，甚至可以说“病毒比杀毒软件还新，所以杀毒软件根本无法识别它是病毒”，但由于传播后部分用户中毒向杀毒软件公司举报的原因，就会引起安全公司的注意并将之特征码收录到自己的病毒库当中，病毒就会被杀毒软件所识别。
病毒作者可以通过对病毒进行再次保护如使用汇编加花指令或者给文件加壳就可以轻易躲过杀毒软件的病毒特征码库而免于被杀毒软件查杀。
美国的Norton Antivirus、McAfee、PC-cillin，罗马尼亚的Bitdefender，俄罗斯的Kaspersky Anti-Virus，斯洛伐克的NOD32等产品在国际上口碑较好，但杀毒、查壳能力都有限，当前病毒库总数量也都仅在数十万个左右。
自我更新性是近年来病毒的又一新特征。病毒可以借助于网络进行变种更新，得到最新的免杀版本的病毒并继续在用户感染的计算机上运行，比如熊猫烧香病毒的作者就创建了“病毒升级服务器”，在最勤时一天要对病毒升级8次，比有些杀毒软件病毒库的更新速度还快，因为开发者对代码编辑十分勤奋，所以就造成了杀毒软件无法识别病毒。
除了自身免杀自我更新之外，很多病毒还具有了对抗它的“天敌”杀毒软件和防火墙产品反病毒软件的全新特征，只要病毒运行后，病毒会自动破坏中毒者计算机上安装的杀毒软件和防火墙产品，如病毒自身驱动级Rootkit保护强制检测并结束杀毒软件进程，可以过主流杀毒软件“主动防御”和穿透软、硬件还原的机器狗，自动修改系统时间导致一些杀毒软件厂商的正版认证作废以致杀毒软件作废，从而病毒生存能力更加强大。
免杀技术的泛滥使得同一种原型病毒透过插件，理论上可以派生出近乎无穷无尽的变种，给依赖于特征码技术检测的杀毒软件带来很大困扰。近年来，国际反病毒行业普遍开展了各种前瞻性技术研究，试图扭转过分依赖特征码所产生的不利局面。当前比较有代表性产品的是基于虚拟机技术的启发式扫描软件，代表厂商NOD32，Dr.Web，和基于行为分析技术的主动防御软件，代表厂商中国的微点主动防御软件等。