贝壳电子书 > 文学历史电子书 > 知者无畏--一个真实的簿世界 >

第24章

知者无畏--一个真实的簿世界-第24章

小说: 知者无畏--一个真实的簿世界 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



另外,这种方法还可以用来识别一些反病毒软件使用的一些小伎俩,如果你发现在你的电脑上有几个文件,只有一种杀毒软件报告有病毒,而你安装的其他好多种杀毒软件都没有任何查到病毒的迹象,这时候你不要着急的杀病毒,把报告感染病毒的文件拷贝到另外的目录中,然后再用杀毒软件杀病毒,这时候你会很高兴的看到“XXX文件发现YYY病毒,已清除”,但是且慢,不要高兴太早,这时候使用刚才的方法,比较你备份的文件和宣称病毒已经被清除的文件,你会发现,“找不到相异处”?!*,也就是说,该文件没有发生任何改变!如果不是白痴的话应该都知道,一个文件如果一个字节都没有变化,怎么可以认为其中隐藏了病毒而且已经清除掉了。我的误报率虽然高一点,但是人家都查不出的病毒我可以查出来并且安全的清除(废话,一个字节都没改当然安全的清除了)
这种方法最大的问题是无法保证一定可以找到确信没有被病毒感染的程序,当然,反病毒软件不可能采用这种方法,

特征码识别法
最早的病毒纯粹是为了验证概念(好酷啊,可以在没有任何人干预的情况下自己传播啦!),或者是恶作剧,突然演奏一段音乐,在屏幕上一阵表演,没有考虑到对付反病毒软件扫描的需要(实际上,最早一批病毒产生的时候,最早的反病毒软件还没有出现,任何时候都是矛先于盾出现的)。当使用非常简单的算法,
比如说,“如果在第1034字节处是下面的内容:0xec ; 0x99; 0x80;0x99,就表示是大麻病毒。”这样的规则就可以非常容易的查出病毒的时候,电脑病毒开始进化。
病毒采用变形、加密等手段使每一次感染的表现形式都不一样。简单的特征码技术已经无法适应检测变形、加密病毒的需要。
这就需要辅助采用虚拟执行、启发扫描等技术,才能准确高效的判断病毒是否感染了特定的文件,但是不论采用了什么技术进行病毒扫描,最终进行准确判断,发现是否被感染,被什么病毒感染还是要依靠特征码识别的方法来完成。


广谱特征码?
〃广谱特征码〃本质上仍旧是特征码,只是在其基础上稍加变通而已。原本的特征码是病毒中一串有这种病毒自己特色的指令序列,例如一段检查自身是否已获控制权或者实施破坏的代码。这样的代码是这种病毒所独有的,在其它正常程序中不可能出现的序列。为了确保不会把其它程序中有可能出现的类似于这种病毒的数据也误判为病毒,特征码串一般都选得很长,有时甚至可达数十字节。为了压缩病毒数据库,很多杀毒软件将很长的特征串经过某种算法计算之后压缩成32位或者64位的校验码。
然而对多形性病毒情况就没这么简单,大量的多态病毒不同形态之间甚至没有超过三个连续字节是相同的。为了对付这种情况,首先特征码的获取不可能再是简单的取出一段代码来,而是分段的,中间可以包含任意的内容(也就是增加了一些不参加比较的“掩码字节”,在出现“掩码字节”的地方,出现什么内容都不参加比较)。单纯的使用这种放宽了条件的特征码是无法准确的判断出病毒的。误报、误杀将会增多,漏报率也会增加,因为这种特征的抽取完全是通过经验总结,也就是说正确程度依赖于病毒分析者的经验和某种先天的“感觉”,从多态性病毒的上亿种甚至无穷种可能静态形态中找到能够简单描述的规律是非常困难的。
使用广谱特征扫描病毒如果达到实用的程度,必须和一对一的病毒分析相对应,也就是说需要针对某种特定的病毒设计使用广谱特征之前的预处理程序,然后再应用广谱特征断定是不是病毒。至于杀病毒,广谱特征没有任何作用,因为使用简单的带掩码的特征是不可能描述稍微复杂一点的病毒清除算法的。

下面是一个完成基本检测/清除病毒软件系统的基本流程


这是一个非常简单的示意图,实际的杀毒软件结构比他要复杂很多,但是目前先进的的杀毒软件使用的病毒扫描方法和上图基本上都是一致的。




第三节 “石器时代”的反病毒

第四节  “视窗”的挑战
关于视窗的诞生,还有很多有趣的故事,很象一出农夫和蛇的戏剧,当比尔盖茨还远远没有取得今天的市场地位的时候,微软就像一只冬眠的蛇一样等待机会,而那个可怜的农夫当然就是计算机业的老大IBM了。为了开发图形界面软件,当时的IBM和微软决定联合进行开发,他们的项目名称是一个叫做OS/2的操作系统,最早是为了配合IBM推出的新一代IBM 个人电脑:PS/2,OS/2设计的基础是80286,这是第一个重大技术失策,因为80286很快就被80386取代了,另外一个重大失策是选择了微软作为合作伙伴,微软在和IBM虚以委蛇的时候,全力投入了自己的图形界面操作系统视窗3。0,视窗1。0和2。0都很不成功,被一家名字叫作“后甲板”(Quarterdeck)公司的“DesqView”,另外一个图形界面打得头破血流,但是比尔。盖茨的坚韧不拔是任何人都无法相比的,通过对OS/2虚以委蛇,全力进行视窗3。0的开发,视窗3。0终于获得了成功。(还记得微软DOS的竞争者DRDOS吗,很不幸的是,DesqView这个竞争者和DRDOS一样,现在成了免费软件,在网上你可以找到它的可执行程序和源代码,也许这就是和微软作对的必然下场吧,没有市场、没有收入,最后只能开放源代码,免费。DesqView可以在下面的站点找到:clarkson。edu/~vryhofab/wserv/freedv/)。
我记得最早微软的视窗3。0和视窗3。1开始流行的时候,还是1993年左右吧,我还在南京大学写关于某种原子内电子轨道磁矩的毕业论文,记得当时要计算一个49阶的矩阵,本来想做一篇非常酷的毕业设计,为我的计算做一个非常漂亮的演示,于是就想到了当时刚刚开始流行的视窗。
那时候视窗环境下应用程序非常少,最主要的原因是开发Window程序极为困难。基本上,开发Windows3。0/3。1环境下的程序是所有程序员的恶梦。微软的SDK之难用,连最坚强的学习者都有一种要哭出来的感觉(包括我在内),记得微软出了一套Windows3。0 SDK的手册,南大图书馆里有这本书,除了爱因斯坦的《广义相对论》以外,我觉得整个图书馆里面就是这本书最令人头疼了。后来陆陆续续又出了一些关于视窗环境下程序开发的一些书籍,所有类似的书本上面,第一段话必定是告诉你现在你处于一个全新的领域,你要做的第一件事情就是改变自己的思路。。。然后是一堆新的名词和概念,什么消息、什么队列、什么窗口、什么句柄啊,最可怕的就是句柄这个东西了,直到今天我还没有搞清楚到底什么是句柄,是个把手吗,能用手握吗?。
幸运的是,后来有了可视化的BASIC语言(Visual BASIC)和Delphi这两种革命性的开发工具,开发视窗程序一下子简单的难以置信。可视化的BASIC语言应该是提出了一种全新的开发方式,直接可以画出界面,然后就可以执行了,在我的印象中,微软很少能够开发出什么突破性的技术,VB或者是仅有的例外吧。但是由于VB是在BASIC基础上开发的,所以存在很多致命的缺陷,主要是:不能开发比较底层的程序,不能开发非常大规模的程序(由于BASIC语言的结构化不是非常好)、还有就是解释执行而不是编译执行,程序的运行速度比较低。所以在真正开发视窗程序的时候还是不得不选择C/C++语言。当时开发视窗程序的标准工具是微软C/C++版本6和版本7(Microsoft C/C++7。0);在微软的Visual C++出来以前,微软的C++语言编译器是以难用而著称的。所以大部分程序员的选择是宝兰公司的Borland C++3。1,这个编译器附带了一个非常好的类库—对象窗口库(Object Windows Library),可惜的是,Borland C++最终还是没有逃脱和微软做对的宿命,现在的Visual C++如日中天,而使用Borland C++的用户已经越来越少了。
而最早的Delphi1。0版本出来的时候,对于所有的程序员都是一个惊天动地的好消息,那时候我还在南京,盗版软件还没有今天这么流行。差不多是94年左右吧,我专门到了一次中关村,那时候希望电脑还是中国电脑界一个赫赫有名的牌子,在海淀医院的对面,希望公司有一个销售的地方还是总部已经记不清楚了,记得我在那里购买了一套正版的Delphi1。0版本。好像是好几千块钱,在当时是一个非常贵的东西了,拿到手里重重的一个盒子,里面有好多本英文的说明书,回来之后还正正规规的把大部分说明书都翻译成中文,我的英语就是那时候真正得到锻炼的。
在得到Delphi之后,视窗环境下的软件开发就变得非常容易了,简单的画一个窗口,然后在上面放置按钮、列表框、菜单等等,就可以编写出一个完成的视窗应用程序,而且这个程序是可以独立执行的EXE文件,速度很快,不是象VB一样需要解释执行,非常缓慢。更重要的是,Delphi使用了Object PASCAL语言做为基础开发语言,这种语言在简单、优雅的PASCAL语言的基础上增加了面向对象的功能,结构化和工程化非常好,甚至可以适应于大型软件开发的需要。
使用Delphi,我很快就开发出了在视窗操作系统下运行的杀毒软件VRV for Windows和后来的NetVRV。随着视窗95操作系统的出现,宝兰公司又很快推出了可以生成32位应用程序的Delphi2。0版本,这样在视窗95下也可以很方便的开发杀毒软件了。
但是Delphi还是有一点不便之处,就是PASCAL语言和C语言比较起来毕竟不是那么常见,而视窗操作系统本身是使用C语言开发的,使用PASCAL语言在调用的时候总是有一点点不方便之处,宝兰公司可能也发现了这一点,所以很快又推出了以C++语言为基础的视窗可视化开发工具—宝兰 C++构造者(Borland C++ Builder),很快,我们就从Delphi转移到C++ Builder上,并开发出了最早的病毒防火墙软件。
现在的选择就更多了,除了简单方便的C++ Builder和Delphi以外,Visual C++也成为一个不错的选择,微软在经过长时间的改进之后,总算让他的Visual C++成为可以和C++ Builder竞争的选手了,虽然从开发的方便程度上还是有所不及,但是从对操作系统的熟悉程度上,已经整体的稳定性上,微软利用自己同时开发操作系统的便利,比起宝兰公司还是要占有一点点优势的。

下面是视窗环境下开发工具的变迁



第五节 警惕的哨兵—病毒防火墙的诞生
在1997年的时候,出现了病毒防火墙技术。实际上病毒防火墙是一个通俗的名称,真正严格的方法应该把这种技术叫做“文件系统实时监视技术”。这一技术在国内首次提出的荣誉无疑应该归功于南京信源自动化技术有限公司。
一九九七年三月,中国。江苏,南京,当时微软的视窗3。1操作系统刚刚开始流行,视窗95才出现的时候,在南京解放路上一栋两层的小楼房里,南京信源公司的办公室里,一群初出茅庐的年轻人,正在讨论最新的视窗操作系统,议题集中在两个方面,一个议题,�

返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)

你可能喜欢的