说起杀毒软件的基础,有些朋友可能觉得不屑于股,但正是这看似简单的杀毒软件原理中,却蕴含着解开谜团的钥匙。我们知道,一个杀毒软件的复杂程度要远远超过病毒与木马,理所当然其原理也比较复杂。一般情况下,一个杀毒软件是由扫描器、病毒库与虚拟机组成,扫描器是杀毒软件的核心,用于发现病毒,然而杀毒软件并不是只存在这一个扫描器!大多数软件都是若干个扫描器(或扫描算法)的结合体,虽然杀毒软件的基本思想就是特征码匹配,但是很不幸,其实现在大多数的杀毒软件都已经拥有了自己独特的扫描器。特征码扫描技术只是第一代扫描技术的主流,现在早就已经迎来了第二代扫描技术的普及。
我们就拿最典型的卡巴斯基来说,在它身上实际上已经很少见到特征码匹配的影子,现在卡巴斯基应用的主流扫描技术是一种称之为“密码校验和”的独特扫描算法,它不同于我们平时理解的校验和技术,他的思想是通过一定的文件特征,从而决定计算某一偏移量区域的校验和,从而得出两个值,这两个值就可以说是最终的所谓的特征码了。而且通过实验,不难发现这种校验和算法对大小写互换,行与行之间互换表现的并不敏感,这直接导致了我们免杀工作面临着更大的挑战。
这种技术早在6.0版就已经被卡巴启用,所以导致了一些免杀当中奇怪现象的发生,一些业内的朋友大多以隐含特征码等词汇来勉强解释这种奇怪现象。下面就是我的推论,小弟这是一家之言,如有错误的地方还望大家多多指正。
首先,特殊的扫描方法必然伴随着特殊的特征码,卡巴斯基的密码校验和定位出来的“特征码”体积通常都比较大,由于它具有一定的抗干扰性质,所以会导致一些简单的修改不会奏效,并且会导致每次特征码定位的差别很大等等现象的发生。为了对其校验和的值进行有效的干扰,所以往往多修改几处看似毫不相关的地方却得到了免杀的效果,从而得出“隐含特征码”的结论。
其实如果我们逆向思考一下,就会发现“隐含特征码”是一种不大可能实现的技术,这个特征码如果是隐含的,那么杀毒软件在检测到它存在时,是报毒还是不报毒?如果报毒,那它就不能称之为“隐含特征码”了。如果不报毒,那么必然就需要有一个机制来触发它,要是这样的话,那还有另一种解释——干扰码。如果发现原有本应有特征码存在的地方如果全被00覆盖来反定位,那么杀毒软件此时就会激活干扰码(一种假的特征码),从而导致我们在免杀的最后几步失败。
所以说“隐含特征码”应该是一种错误的观念,真正导致这种现象发生的是我们所知道的或不知道的扫描算法导致的,例如卡巴斯基的密码校验和扫描算法。
因此,正方感觉如果想要研究免杀技术,就应该先搞明白杀毒软件的原理。正如上文所述,仅仅一个扫描算法的问题却揭示了一些我们以前的错误观念,因此正方相信通过杀毒软件原理来研究免杀当中的一些问题才是明智之选。
http://wenda.tianya.cn/question/19hmt2rg02d8dbbv606ahv4e1damo92lsuj9s
http://wenda.tianya.cn/question/19hmt70a02t9m2p5jq1mqrtma9c1okulbsj28
http://wenda.tianya.cn/question/19hmt91no38bb445ovcb11rkes94m894vkhcl
http://wenda.tianya.cn/question/19hmtqs1o6v8e4csoo37msk90sgnk4mk50hi5
http://wenda.tianya.cn/question/19hmtrs9075a0m9tbvf4sn4m12vkqk26a2h0d
http://wenda.tianya.cn/question/19hmttvl879avvhkeaa5fibj5spn7c5e2qj2l
http://wenda.tianya.cn/question/19hmucs78fp91fk536eqom5n6f7bq5v3hkjv5
http://wenda.tianya.cn/question/19hmudmj0frbc8nole13gmli5t99ag24lah6v
http://wenda.tianya.cn/question/19hmueguoiv927o2gptee7kvb5r9m68q8aj81