1.关于杀毒软件,你需要知道的

1.1.杀毒软件的重要性

电脑的使用已普及到社会生活的方方面面,无论是工作、娱乐、学习、购物等等都会接触到电脑。使用电脑实际上是使用电脑中的各种软件。

什么软件重要呢?对于不同的人、不同的目标,答案也不尽相同,但是无论做什么,安全自然是不容忽视的:网上购物需要确保交易安全、资金安全;聊天娱乐需要保护隐私;工作学习需要防止资料、机密泄漏,即便没有这些诸多考虑只是随意上网也要需要一个安全稳定的操作系统环境,这一切需要被人们担心、防范的又是什么呢?是木马、病毒、恶意软件。而杀毒软件正是用来对付这些威胁、保护电脑正常使用的必不可少的软件。

1.1.1.学习杀毒软件开发的重要性

对于大多数普通的电脑使用者来说并不重要。

绝大多数的电脑使用者并不需要学会开发杀毒软件,也不需要懂杀毒原理,会用就足够了。但对于某些人也许很重要,有的需要了解、有的需要熟悉,甚至有的需要掌握。

电脑行业相关从业者,譬如网管、空间服务商、系统管理员或其它从事系统安全维护人员等,有必要多了解杀毒软件相关知识,熟愁杀毒软件功能重点,以及防杀毒原理,以便在进行选用杀毒软件或部署防杀毒安全方案等操作时有更多好的选择。

因为杀毒软件的重要性所至,绝大多数的电脑都会安装杀毒软件,因此杀毒软件的目标用户群非常之大、市场非常广阔。也就意味着从业者的前景较为光明。有条件以此方向进行创业是个不错的选择,当然并不是指跟国内外几大杀毒巨头抗衡,现存的一些小众反病毒安全产品也有不错的生存空间。

在安全公司或开展安全相关技术项目的公司供职者,如果自己掌握着此方面技术,想必在工作中更会如鱼得水。

最后,从兴趣或是研究、学习角度讲,如果以广义的技术含量而论,杀毒技术无疑居于金字塔的顶端,是一个门槛级高的领域,掌握了其技术,就等于掌握一门稀缺的技艺,何乐而不为呢?

1.2.杀毒软件技术难吗?

不难。

杀毒软件开发技术之所以在人们眼中高深莫测,是因为通常无法窥得其门禁所至。就好像要做一件从未做过的不一般事情一样,会觉的无从下手。

造成这种境况的原因源自相关资料的匮乏,就像在武侠小说中,常会有某门派高等功夫很厉害,却传男不传女、传内不传外,更没有印刷量为5000册的秘籍。结果造成江湖人士们天天听说,却见不得、习不到。感觉就是很好很强大,自己学不会。

杀毒软件开发技术便像是如此,掌握在全地球为数不多的几家或几十家企业手中,用户能听到的往往是某某杀毒引擎、启发式技术甲、主动式技术乙、八重防御系统、九层监测技术等等这些貌似很厉害的字眼,用户无法判断其倒底有多么强大,只能中这些晦涩神奇的词句中下意识的自我判断,书店中各种类的也更加使人们觉的杀毒是一个神密不可及的领域。

而事实上,杀毒技术真的有那么难吗?

不可否认,任何领域的任何事情做到极致都是很难的,杀毒技术确实有很难的部分,但如果想入门、想掌握,并不会是想像中的那么困难。很多内容其实是已知的,但只是之前没有把它跟杀毒开发联想起来,只是以前没有想到杀毒软件是用如此的方法开发的,只是以前不知道如此技术有如此用法。

相信很多人读完本书后会有这样的感觉:原来如此,不难,我也可以掌握的。

2.杀毒软件功能设计

进行杀毒软件开发之前,首先需要明确功能。

杀毒软件需要具备的基本功能分为:杀毒、防毒、升级、自我保护、设置以及其它辅助功能。

2.1.杀毒

查毒杀毒,是杀毒软件的基本功能。

在实际的软件应用中,用户通常有不同的操作需求,比如有要要对内存和敏感系统区域进行快速扫描、有时需要进行全硬盘扫描、有时临时使用U盘,插入U盘后,需要对U盘进行单独扫描。
为了满足这些需求,通常在杀毒软件中提供三种扫描方式:快速扫描、全盘扫描、自定义扫描,也就是经典的三按钮式杀毒功能。国内外很多杀毒软件都采用了这种方式,并不是跟风,而是这样的设计确实实用、确实能满足用户的需求。

既然进行病毒扫描,理所当然可能会扫描到病毒。在扫描到病毒后,需要提供给用户相应的操作措施,如清除、自动清除、忽略、隔离。

2.2.防毒

在一定意义上而言,防毒功能的重要性甚至大于杀毒功能。如果用户有忧患意识,在安装系统后及时安装好杀毒软件,做好病毒防护工作,时刻阻止病毒侵入系统,远比中毒后再杀毒效果要好的多,亡羊补牢在电脑使用过程中是常常会晚的。因此,防毒功能是杀毒软件另一个非常重要且不可缺的部分。

在这里要对云安全进行一些简单的介绍,因为本书中对杀毒软件的设计中,将要在防毒功能中引入云安全概念,这是一个与常见的主流杀毒软件不同的防毒理念。

云安全,是个新兴的技术,高度依赖互联网、依赖带宽、依赖用户量,是互联网高度发展衍生出的一种技术。在杀毒软件领域中,具有极高的实用性。目前主要的杀毒软件中,大都有云安全应用的身影,甚至有完全的云查杀软件。使用云技术,利用云病毒库进行病毒的检测和查杀。

但本人认为,云安全技术在这一领域更适用来做防护,而不适用做杀毒。原因在于:云查杀,是在建立云服务器的基础上,将病毒库特征码置于服务器数据库中。用户在本地进行扫描时获取到本地文件特征码,然后需要连接到服务器,进行特征码匹配验证,以确定被扫描的文件否是病毒。网络验证,不管当前的网速达到了多快,但其速度是永远无法与本地相比的,进行文件扫描查杀,用户需要速度,而此举降低了扫描速度。况且,存储于服务器中的病毒库,是完全可以可以以升级病毒库的方式下载到客户机器中,进行高速扫描,这是传统杀毒软件惯用的方式,没有必要,也没有理由非存放在服务器。再则,云的思想,原本是将工作量分散到大量的互联网终端执行,而现行的这种云查杀,反而是将大量的客户端工作量集中到服务器执行,根本有驳云的思路。因此,云查杀不是一种优势的做法。

而如果将它应用到防护方面,在大数量用户的基础上,可以做到自动、快速的病毒特征码提取,将大量互联网客户端的数据上交到服务器,并且可以将特征码即时放置在云服务器病毒库,在有用户查询时,又能做到即时的反馈,直接提高了对新出病毒的反映速度。而这种防护式的云检测,对速度要求远低于云查杀的强度。

介于以上原因,本书中设计的杀毒软件,将使用此种云安全防护技术。

2.3.升级

杀毒软件,需要带有病毒库,病毒库是病毒特征码的集合,杀毒软件性能的强弱在很大程度上依赖于病毒库。病毒库是很庞大的,通常有几十MB,甚至上百MB,因为它要存放几十万上百万的病毒特征码。最新最全的病毒库放置在网络中的服务器端,为了实时的将病毒库更新到客户机器,便需要用到下载升级功能。这是杀毒软件的辅助的功能,却也是必不可少的。

另一方面,升级功能也用于更新杀毒软件的功能模块,以方便户在不必重新下载安装软件即可使用到最新最稳定的功能。

2.4.自我保护

杀毒软件需要一定的自我保护能力甚至是绝对的自我保护能力,以防止被病毒或其它恶意软件强行将自身进程结束,换句话说,即是要防止没杀掉病毒反被病毒杀掉。

很多病毒木马为了提高生存率,会与杀毒软件对抗,反杀杀毒软件。比如某些病毒木马在运行时,会检测系统中是否已经安装了杀毒软件,如果检测到,会想尽办法终止杀毒软件,以方便进一步入侵系统。此时,杀毒软件必须有足够的能力自保,以确认能够击败病毒。

当然,杀毒软件的主要功能是保护系统的正常运行,而不是与病毒木马进行技术对抗,在使用自我保护功能时,需多方面考虑,即不过份影响系统性能和稳定性又能确保系统安全为最佳。

2.5.黑白名单

黑白名单是一个简化的特征码库,辅助病毒库工作。

有了病毒库,为什么还要使用黑白名单?

病毒库中存放的是病毒木马的特征码,有某些情况下,除了病毒木马还有一些边缘软件,不属于病毒木马范畴,不会对系统造成危害,但它会对系统产生一些不好的影响,比如某些P2P在线影音软件的后台程序,会将机器做为一台种子机器,不停的上传下载电影,占用大量宝贵的带宽和流量、比如某些聊天软件登录时弹出的广告等等。这些软件是正常电脑使用不需要的,但它却是某些正常软件附加软件,出于多种原因的考虑,不能将其列入到病毒库,那么只能使用黑名单功能阻止其运行。

甚至是系统中存在的某些正常软件,因为一些个人原因想阻止它的启动,等等这些都可以使用黑名单功能。

至于白名单,与此恰恰相反。比如一些调试工具,往往被归为恶意工具的一种而被列入病毒库,如果出于工作或其它需要需要使用这些工具,则需要使用白名单功能使期能够运行而不被杀毒软件阻止。

归结起来,黑白名单的存在,是为了扩充病毒库的使用范围,和减少杀毒软件的误报率。

2.6.设置

杀毒软件需要提供合理自由的设置选项,对软件功能进行配置,以符合用户的使用习惯。

比如是否使用右键菜单。文件及文件夹的右键菜单可以使扫描病毒等工具简单化,但有的用户却不喜欢在右键菜单中增加过多的内容而宁可使用自定义扫描。

比如是否要让软件在系统启动后自动运行、是否开启自动保护、是否启用云安全等等。

细节决定成败,用户使用软件的舒适度,决定着用户对软件的忠诚度。

2.7.界面

除了功能性方面,软件界面也是不可忽视的一部分,对用户而言,基本功能相近的情况下,选择一款软件时,往往会根据对软件界面的第一感觉进行选择。

界面不单单是美工、设计的事,在编程中巧妙的利用技巧对界面进行美化、优化也会起到非常好的效果。比如可以做换肤、动态按钮、显示特效等等。

2.8.其它

除上面介绍到的具体功能外,软件中还需要对版本号、病毒库日期等用户较为关心的相关信息在界面中合理的位置进行显示。在以上的设计理念中,多次提到了对用户的感受,之所以要多次提及,是因为不管设计任何软件,都是以用户使用、为用户解决问题为目的,设计杀毒软件当然也不例外,一方面设计功能,一方面也要考虑用户体验。

以上,对于功能的设计已经写完了,到此也许有疑惑:杀毒引擎呢?主动防御呢?为什么都没有说到。

诚然,在各种杀毒软件的推广宣传词中,常会到见各自引擎的名称,甚至是双引擎、四引擎,好似引擎越多功能越强大,当然在大多数用户认知当中也确实会是这样。那么杀毒引擎倒底是什么呢?它是检测和查杀病毒的方式,比如在扫描一个文件时,首先获取它的特征码,然后与病毒库中的病毒特征码进行比对,如果确认是病毒,对它进行查杀,如果是感染型病毒,需要对文件重写,还原文件入口点,等等这一系列操作组合整合起来就是杀毒软件的引擎。对源程序而言它就是一部分代码。同理,主动防御也只是防毒功能而已。

是否有这种一种感觉:宣传中那样神秘莫测的杀毒引擎原来不过如此。

注:作者:wing qq:6465660
本书理论及功能、代码源于杀毒软件:“Ty2y杀毒软件”,作者授意,文章可自由转载,只需注明原出处即可,特此说明。

10-07 18:25