大家肯定都用过杀毒软件,但是你了解过杀毒软件是如何锁定病毒文件的吗?今天果果就和大家探讨一下这个问题。
简单来说,杀毒软件定位病毒基本就是“看脸”。
在相学书籍中,额头正中央有痣的人被归类为“官场贵人”,我们可以利用这个特点来发现身边有哪些人长得像“官场贵人”。杀毒软件也是根据文件“相”中“痣”的位置来判断哪些文件是病毒,这里的“痣”就是病毒的特征代码。
病毒文件和普通文件一样,都是以二进制形式存储在内存中的,病毒的“特征码”就是病毒文件中用来区别于其他病毒和普通文件的01字符串。
以“熊猫烧香”病毒文件为例,病毒源文件运行时会以“xboy”、“whboy”两个字符串为键释放病毒代码,这两个字符串在文件中的位置如下图所示:
我们可以通过这两串字符串作为特征代码来识别“熊猫烧香”及其变种病毒。
病毒特征码的提取需要遵循以下特点:
1.独特性。
病毒特征码需要能够唯一标识目标病毒,如果在提取特征码的时候,把一些常用的信息提取出来作为特征码,就会造成非病毒文件被识别为病毒,也就是所谓的误判。
几年前,杀毒软件错误地提取了病毒特征代码,导致Windows系统文件被识别为病毒。
2.稳定性。
病毒特征码需要保持稳定性,最好在不同的病毒变种之间保持一致,如果错误地选取容易变化的01字符串作为特征码,可能会影响病毒检测的效率,甚至导致早期漏检。
3. 尽量简洁。
在准确率一致的情况下,特征编码的长度越小,检索效率越高。
利用特征码识别检测病毒是杀毒软件锁定病毒的主要手段,杀毒软件的病毒库就是一个存储特征码的数据库。
了解了特征码的工作原理之后,我们很自然的想到,如果想要让杀毒软件无法通过现有的特征码识别病毒,只需要将特征码对应的01字符串修改为其他字符串即可。
比如前文提到的“熊猫烧香”特征码,如果病毒作者在下一版本的源代码中将密钥改为“sbboy”,那么以“xboy”、“whboy”为特征码的杀毒软件将无法识别新一代的“熊猫烧香”。
通过修改源代码来改变特征码并不像想象的那么容易,因为你无法预测杀毒软件会用哪个程序代码作为特征码。因此,除非作者修改整个病毒程序的源代码,否则根本无法规避被杀毒软件检测的风险。
但是,总有魔鬼比圣人更厉害,现有的技术可以在不修改源代码的情况下,彻底破坏原有的文件结构,从而使原有的特征代码失效,同时保证病毒的正常功能,你知道什么是技术吗?