隐蔽

编辑

病毒会借由拦截防毒软体对作业系统的呼叫来欺骗防毒软体。当防毒软体要求作业系统读取档案时,病毒可以拦截并处理此项要求,而非交给作业系统执行该要求。病毒可以返回一个未感染的档案给防毒软体,使得防毒软体认为该档案是干净未被感染的。如此一来,病毒可以将自己隐藏起来。现在的防毒软体使用各种技术来反击这种手段。要反击病毒匿踪,唯一完全可靠的方法是从一个已知是干净的媒介开始启动。

自修改

编辑

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

随机加密

编辑

胡搞更甚者是对病毒本身进行简单的加密。这种情况下,病毒本身会包含数个解密模组和一份被加密的病毒拷贝。如果每一次的感染,病毒都用不同的密钥加密,那病毒中唯一相同的部分就只有解密模组,常会附于档案尾端。防毒软体无法直接透过病毒特征码侦测病毒,但它仍可以侦知存在解密模组,这就可以间接侦测病毒。因为这部分是存放在宿主上面的对称式密钥,防毒软体可以利用密钥将病毒解密,但这并不必要。因为自修改代码很少见,防毒软体可以先将这类档案标记成可疑。

一个古老但简洁的加密技术将病毒中每一个位元组和一个常数做逻辑异或,欲将病毒解密只需简单的逻辑异或。一个程式若可修改自身程式码就十分可疑,因此许多病毒定义中,将加解密部分视为病毒特征码的一部分。

多态

编辑

多态是第一个对防毒软体造成严重威胁的技术。就像一般被加密的病毒,一个多态病毒以一个加密的自身拷贝感染档案,并由其解密模组加以解码。但是其加密模组在每一次的感染中也会有所修改。因此,一个仔细设计的多态病毒在每一次感染中没有一个部分是相同的。这使得使用病毒特征码进行侦测变得困难。防毒软体必须在一模拟器上对该病毒加以解密进而侦知该病毒,或是利用加密病毒其统计样板上的分析。要使得多态代码成为可能,病毒必须在其加密处有一个多态引擎(又称突变引擎)。关于多态引擎的技术细节请参阅Polymorphic code。

有些多态病毒会限制其突变的速率。例如,一个病毒可能随著时间只有一小部分突变。或是病毒侦知宿主已被同一个病毒感染,它可以停止自己的突变。如此慢速的突变其优点在于,防毒专家很难得到该病毒具有代表性的样本。因为在一轮感染中,诱饵档案只会包含相同或是近似的病毒样本。这会使得防毒软体侦测结果变得不可靠,而有些病毒会躲过其侦测。

变形

编辑

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