原始软件: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)就可以实现特征库拉取和加载。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!