
互联网
这个问题存在偏差。首先,修复被病毒感染文件的做法是一直存在的,在早期
互联网时期,这种文件恢复操作其实是非常普遍常见的。那时杀毒软件还不怎么流行,
互联网上有许多针对特定病毒的专杀工具,其中很大一部分是恢复类型的,而不是那种把文件一删就不管不顾的类型。那么为什么会出现一代不如一代的情况?这是多方面原因造成的。从技术层面来讲,删除文件后就不管了无疑是最省事的做法,然而逆向恢复却要复杂得多。这意味着要彻底逆向病毒的逻辑运行方式,搞清楚它感染文件的每一个细节,之后才能对文件进行可逆恢复。甚至可以说,做逆向恢复的难度,在大多数时候比重新编写一个病毒的难度还要大得多。就好比打碎一个东西很简单,但打碎后再拼回去就难多了。实际上,
计算机病毒大多是一些脚本小子在年少轻狂时的作品,没有任何一家
公司有那么多的人力和物力去陪这些小家伙玩过家家。只有当某个病毒产生足够大的影响力时,才会采取逆向恢复这种方式。除此之外,早期特征码查杀是各种杀毒软件的主要技术实现方式之一。提取特征码并不是一件很难的事情,它会将数据进行切片处理,然后摘取一部分做哈希运算,保存下来的就是数据指纹。如果一个程序包含这些片段,那么这个程序很可能是病毒,或者是被病毒感染了。所以对于杀毒软件来说,抓取特征并删除是一种开发成本低且有效的方式。但到了现在,特征查杀已经不再是唯一的病毒判断方式,行为分析早已成为主流手段之一。例如,一个程序调用openprocess打开其他进程,并向其中写入一些内容,这种行为本身就非常可疑。即便在特征库中没有该病毒的特征,但存在这种行为,杀毒软件也很容易将其判定为病毒。这个时候总不能说把openprocess这个函数删除吧,它本身是系统函数,在这种关键函数的ring0层,杀毒软件更是设置了一层又一层的过滤驱动。还有很多被病毒感染的文件本身是不可逆的。例如pe格式具有紧凑性,删除和插入一段数据要比替换数据麻烦得多。所以,一些病毒感染特定文件时,通过替换文件的一部分数据也是一种常见做法,而被替换的数据往往不具备可逆恢复的条件。另外,白加黑也是恶意程序常用的手段,这类恶意程序常常通过类似于dll劫持的方式将自己编译为目标dll的一部分,直接删除恶意代码部分会导致程序最终无法使用。反正结果都是一样的,那还不如直接删除更干脆。