深度解析杀毒软件内核(经典5章合集)

连载文章 深度解析杀毒软件内核

今天是我们这期课程的第一课,这期课程将会采用svm引擎作为讲解的杀毒引擎,svm引擎是世界上仅有的开源杀毒引擎,它的开发者们都是公益的志愿者,必然欢迎大家研究学习,因此相比于其它不开源的商用杀毒引擎研究价值更高,学习它实用性更强(大部分杀毒引擎为了保密挣钱甚至不希望你研究它)。我们会介绍一下svm引擎是什么以及其运行原理,本期课程由sws基金会赞助资金,因此将会完全永久免费,并且将每1-2天更新一期。sigaide大佬将会为大家深度讲解svm引擎。

svm引擎属于启发模式杀毒引擎,其模式为先使用svm外壳部件sbj引擎采用病毒粗略识别的模式检测疑似文件,再交给svm核心部件也就是虚拟器引擎扫描可疑现象,最后交给swb引擎对病毒进行脱壳以确认病毒等级以及是否出现过,随后做出判断。因为这样,svm引擎的速度快,查杀准,是世界上唯一一个融合了两大引擎的杀毒软件,融合了各自的优点,这也是更多识货的专业人员选择svm引擎的原因。svm引擎为国际软件分享组织开发开源软件sws安全中心时开发的开源杀毒引擎。sws安全中心是svm引擎的权威,svm引擎的所有更新都通过sws安全中心发布。基于svm引擎的杀毒软件还有小达人安全软件,徐良民杀毒软件等等。

下一篇我们将会深度解析svm引擎的第一个部件:sbj引擎的工作原理

sbj引擎是svm引擎的第一道关,也是十分重要的一部分,它平衡了整个杀毒过程的速度和效果。抽象的说,就是主要起加速的作用。也是它,使sws安全中心等使用svm内核的启发式杀毒软件在速度上更胜一筹。

值得注意的是,如果电脑已经被确定中了病毒那么sbj引擎的作用将会退化为筛选出可执行文件以及可能被感染的文件。具体筛选的粗略程度取决于用户的选择。自然的,越粗略速度越高,查杀率越低,反之亦然。

sbj引擎的作用是将文件进行大致的粗略扫描,通过用户选择的扫描精度筛选出疑似目标,并递交给第二层svm核心虚拟器部件进行虚拟器扫描以确定是否为病毒,sbj的主要作用为筛选加速,并非杀毒。

sbj引擎的详细运行过程为:

使用b树算法超高速遍历磁盘文件(时间复杂度n log n :n为文件数量),如果检测到的不是可执行文件那么就把他交给病毒库杀毒引擎进行sha码识别(复杂度n的二次方:n为文件字节数)。如果是,则进行粗略可疑行为检测(复杂度 n三次方 log n,内部实现采用了djstrala和dp)如果有病毒迹象则交给svm核心虚拟器部件,没有则跳过。sbj引擎的详细解析到这里就结束了,如果大家想要深入了解一下的话可以把svm引擎的代码下载了和本文对照着看,相信大家一点会受益匪浅的。

下一张我们将会初步介绍svm核心虚拟器部件,由于svm核心虚拟器部件非常复杂,我们将会分4章介绍。

连载文章 深度解析杀毒软件内核2

sbj引擎是svm引擎的第一道关,也是十分重要的一部分,它平衡了整个杀毒过程的速度和效果。抽象的说,就是主要起加速的作用。也是它,使sws安全中心等使用svm内核的启发式杀毒软件在速度上更胜一筹。

值得注意的是,如果电脑已经被确定中了病毒那么sbj引擎的作用将会退化为筛选出可执行文件以及可能被感染的文件。具体筛选的粗略程度取决于用户的选择。自然的,越粗略速度越高,查杀率越低,反之亦然。

sbj引擎的作用是将文件进行大致的粗略扫描,通过用户选择的扫描精度筛选出疑似目标,并递交给第二层svm核心虚拟器部件进行虚拟器扫描以确定是否为病毒,sbj的主要作用为筛选加速,并非杀毒。

sbj引擎的详细运行过程为:

使用b树算法超高速遍历磁盘文件(时间复杂度n log n :n为文件数量),如果检测到的不是可执行文件那么就把他交给病毒库杀毒引擎进行sha码识别(复杂度n的二次方:n为文件字节数)。如果是,则进行粗略可疑行为检测(复杂度 n三次方 log n,内部实现采用了djstrala和dp)如果有病毒迹象则交给svm核心虚拟器部件,没有则跳过。sbj引擎的详细解析到这里就结束了,如果大家想要深入了解一下的话可以把svm引擎的代码下载了和本文对照着看,相信大家一点会受益匪浅的。

下一张我们将会初步介绍svm核心虚拟器部件,由于svm核心虚拟器部件非常复杂,我们将会分4章介绍。

深度解析杀毒软件内核3 虚拟机的实现

svm内核的核心部件,也就是scs(sws vm scaner)是通过虚拟机实现的,虚拟机简而言之就是模拟出一台电脑,在那台电脑上运行通过前一张介绍的sbj引擎识别出的疑似病毒,然后检测电脑是否遭到破坏来检测文件是否为病毒。目前由于实力限制,版权纠纷等原因,中国没有中资公司真正有实力在杀毒软件中广泛使用此技术(svm引擎尽管是中国人主导开发但还有一位主导开发者是外国人),因此这是一项非常尖端的科技。下面我们先来介绍一下什么是虚拟机(大佬请跳过)

CPU的虚拟化:背景知识:x86 CPU有一项权限机制,把CPU的状态置于RING 0到RING 3分别使CPU具有最高的权限到最低的权限。以Linux为例,内核运行于RING 0上,而其余全部用户进程运行于RING 3上(Xen比较奇葩,Linux在Xen下面会运行于RING 1)。在用户权限下,所有的IO设备是不可操作的,另外,有些控制寄存寄是无法访问的,一些privilege的指令是不能运行的。因此一个用户进程要想读写文件,进行一些操作,就要依赖于内核。系统调用能够使CPU运行于RING 0,并执行内核代码(具体方法见一些操作系统教程)。背景说完。一个CPU的全部状态其实就是所有寄存器的值,只要保证任何操作之后寄存寄的值在OS看来是正确的,guest OS就可以正常执行。hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。那么考虑虚拟化一个CPU,在虚拟化的guest OS里面,CPU无论如何也不可能运行于RING 0,因为这样的话,host OS必然会crash掉。因此,当一个guest OS想要进入到RING 0执行内核代码时,hypervisor会向guest OS说谎,并告诉它,你已经在RING 0上了,而实际上,所有的指令还是在RING 3上。当guest OS访问到任何privilege的东西时,hypervisor会接到fault,此时hypervisor会判断这个指令是什么,并修改相应的虚拟寄存器的状态,然后返回。这样guest OS就可以正常的运行。需要指出的是,在大多数的指令下代码是直接跑在硬件上的,而不需要软件介入。只有在一些权限高的请求下,软件会介入,并维护虚拟的CPU状态。内存的虚拟化:背景知识:虚拟内存,页表结构等。OS的基础内容,不表。hypervisor虚拟化内存的方法是创建一个shadow page table。正常的情况下,一个page table可以用来实现从虚拟内存到物理内存的翻译。在虚拟化的情况下,由于所谓的物理内存仍然是虚拟的,因此shadow page table就要做到:虚拟内存->虚拟的物理内存->真正的物理内存。以下是细节,如果看着闹心,请忽略。hypervisor会维护一个从虚拟内存到物理内存的映射,当guest OS更换自己的page table,也就是改变CR3寄存器的值,hypervisor会因为用户态的权限不足而接到一个general exception,hypervisor会记录用户想要更换的新的页表,并放上一个空的shadow page table,然后返回。这个空的shadow page table会在接下来的执行中造成CPU无法进行地址翻译,而产生page fault。在fault发生后,hypervisor会得到一个虚拟地址,然后根据之前记录的用户的页表结构,翻译出一个虚拟机器地址,然后再把这个虚拟的机器地址,由hypervisor维护的映射翻译为实际的机器地址,然后装入shadow page table,并返回执行。如此,就实现了:虚拟内存->虚拟的物理内存->真正的物理内存。I/O虚拟化:背景知识:memory mapped I/O device。大多数的PCI设备都是直接将自己的某些控制寄存器映射到物理内存空间上,CPU访问这些控制寄存器的方法和访问内存相同。CPU通过修改和读取这些寄存器来操作I/O设备。虚拟化的方法很简单,没当hypervisor接到page fault,并发现实际上虚拟的物理内存地址对应的是一个I/O设备,hypervisor就用软件模拟这个设备的工作情况,并返回。比如当CPU想要写磁盘时,hypervisor就把相应的东西写到一个host OS的文件上,这个文件实际上就模拟了虚拟的磁盘。

(虚拟机的描述在一篇论文的基础上修改而来)。

好了,由于字数限制,这一章就到这里结束了,下一章我们将会讲svm引擎是怎么利用虚拟机完成杀毒的。

深度解析杀毒软件4

svm引擎核心虚拟器2

这一章我们将会架构性的讲一讲讲svm核心虚拟器引擎是如何检测虚拟器中的程序是不是病毒的(具体解析在下一章)。首先,svm引擎会在虚拟器中植入一个检测程序,同时在外部设置一个对虚拟器使用的虚拟磁盘文件进行检测的程序。植入的程序对虚拟器的可启动性,速度变化,系统是否损坏等进行一系列评估,同时不断改变虚拟器中的时间和运行程序的函数以判断通过时间运行的病毒。虚拟器外的程序则不断检测虚拟磁盘的可用性和读写速度等数据判断是否中了磁盘性病毒,由此,svm核心虚拟器部件的查杀准确率非常非常高,领先于大多数杀毒软件。

下一章我们将解析svm引擎核心虚拟器部件中的内部与外部检测工具是如何具体工作的
深度解析杀毒软件内核5
svm虚拟器内核外部与内部扫描器
5.1内部扫描器
装载于svm引擎内部的扫描器被叫做"思德之盾",它是最近小达人安全软件并入sws安全中心时被sws安全中心经过优化和修改后加入的。思德之盾引擎本来直接运行在操作系统里,但它的强项是检测是否有文件修改系统,导致系统故障或影响系统运行,但由于它扫描模式比较单一,一旦电脑上文件太多就会大量误报,但将它植入虚拟器之后由于虚拟器中只有一个要扫描的文件就不会导致误报,同时sws安全中心会不断改变虚拟器内部时间以激发在一定时间破坏电脑的病毒。这也是sws安全中心非常大的创新。
5.2虚拟器外部虚拟磁盘检测引擎
sws安全中心的虚拟器外部磁盘检测引擎相对而言比较简单,它唯一的用途是检测虚拟器虚拟磁盘文件是否由于虚拟器内部病毒损坏或大量减少增加以检测文件是否为病毒。
这一章到这里结束了,下一章我们将会讲相对简单的svm内核的病毒码提取技术。

Guess you like

Origin blog.csdn.net/qq_36916968/article/details/101793801