杀毒软件ClamAV的移植

原始软件:ClamAV

移植目的:移植到linux内核态。需要把基于文件的杀毒,变成基于网络的杀毒。

一些工作的思路:这些工作都是已经完成的,我把思路说一下。

1 仍然使用ClamAV的引擎,即基于特征库的扫描文件机制

2 文件由网络流数据拼接形成

3 内核有少量文件处理函数(如sys_open,相对用户态open为少),将ClamAV的文件处理改为内核文件处理

内核无目录机制,所以需要或移植目录处理到内核,或者转为非目录的内存操作文件夹。

内核无压缩,解压缩,可以比较容易找到支持内存解压缩的开源软件

4 ClamAV基本都是内存操作,且内存操作接口(如malloc都做了封装,封装为了clmalloc)集中,所以很容易改造为内核分配(从malloc到kmalloc或其他自定义内核内存分配方式)

5 跨线程/跨进程处理,从用户态到内核态,ClamAV涉及到的多CPU处理,核心是特征匹配算法。特征匹配算法是多模的,因而ClamAV是支持多核CPU的(FIXME)

6 关于NUMA支持。NUMA支持仅限定内存的分配方式,在做CPU识别时需要区分属于哪一路,从而就近访问内存。此处通过封装4中的内存操作来实现。

7 特征库:杀毒库仍然可以使用ClamAV的,这一点的处理类似3.只要在内核可以看到用户态文件系统(效果略微有差别,用户态可能是/usr/local,到内核态看到的是cfi:/ FIXME)就可以实现特征库拉取和加载。

你可能感兴趣的:(杀毒软件ClamAV的移植)