• 我不知道现在的她是否在心里存在着我的影子
    我只知道她有什么事情还是会来找我
    很多时候一谈到关于爱情我都会变得很沉闷
    那时的我就会找机会转移话题
    总在逃避着即将发生的事实
    今天她跟我说已经有人苦苦对她一味的好
    我默然
    我不知道我要鼓励她还是怎么样
    我慌乱中关掉了QQ
    我想这样是我唯一不用回答的方式


    loading...
  • 使用过activex的人都知道,activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具。

    2000系统的regsvr32.exe在winnt\system32文件夹下;
    WInXP系统的regsvr32.exe在windows\system32文件夹下

    regsvr32的用法为:
    "regsvr32 [/s] [/n] [/i(:cmdline)] dllname”。其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。 

    参数有如下意义: 
    /u――反注册控件 
    /s――不管注册成功与否,均不显示提示框 
    /c――控制台输出 
    /i――跳过控件的选项进行安装(与注册不同) 
    /n――不注册控件,此选项必须与/i选项一起使用

    执行该命令的方法:

    1、可以在“开始”--“运行”,调出运行的对话框,也可以使用Win+R热键,然后直接在输入栏输入即可
    2、在开始--运行 输入cmd,调出‘命令提示符’窗口,然后再执行regsvr32命令。

    二、Regsvr32错误消息的说明
    当使用 Regsvr32.exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32.exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。

    以下列表介绍了 RegSvr32 错误消息和可能的原因。 

    Unrecognized flag:/invalid_flag 
    键入的标志或开关组合无效(请参阅本文中的“Regsvr32.exe 的用法”一节)。 
    No DLL name specified. 
    未包括 .dll 文件名(请参阅本文中的“Regsvr32.exe 的用法”一节)。 
    Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found. 
    Dllname不是.dll 或.ocx 文件。例如,键入 regsvr32 wjview.exe 就会生成该错误消息。 

    例如,键入regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。如果您怀疑内存中有损坏的Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章:197155 如何终止孤立进程OleInitialize failed (or OleUninitialize failed). 

    Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。

    一、轻松修复IE浏览器
    regsvr32 Shdocvw.dll 
    regsvr32 Oleaut32.dll 
    regsvr32 Actxprxy.dll 
    regsvr32 Mshtml.dll 
    regsvr32 Urlmon.dll
    regsvr32 browseui.dll 

    作用:
    1、同时运行以上命令不仅可以解决IE不能打开新的窗口,用鼠标点击超链接也没有任何反应的问题;
    2、还能解决大大小小的其它IE问题,比如网页显示不完整,JAVA效果不出现,网页不自动跳转,打开某些网站时总提示‘无法显示该页’等。

    二、解决Windows无法在线升级的问题
    regsvr32 wupdinfo.dll

    作用:
    Windows的漏洞很多,每隔一段时间就需要使用“Windows Update”升级程序进行在线升级,不过“Windows Update”经常出现无法使用的情况,这时,我们可以使用Regsvr32来解决这个问题。

    三、防范网络脚本病毒有新招
    regsvr32 /u scrrun.dll

    作用:
    网络脚本病毒嵌在网页中,上网时在不知不觉中机器就会感染上这种病毒。笔者认为单纯使用杀毒软件并不能有效地防范这些脚本病毒,必须从病毒传播的机理入手。网络脚本病毒的复制、传播都离不开FSO对象(File System Object,文件系统对象),因此禁用FSO对象就能有效地控制脚本病毒的传播。
    如果需要使用FSO对象,键入“regsvr32 scrrun.dll”命令即可。

    四、卸载Win XP自带的ZIP功能
    regsvr32 /u zipfldr.dll

    作用:
    Win XP以功能强大而著称,但有些功能却常常令人有“鸡肋”之感,比如Win XP自带的ZIP功能和图片预览功能,不仅占用了系统资源,功能也远不如第三方软件强大。其实用Regsvr32命令可以很容易地卸载这些功能。

    五、修复无法缩略图查看文件问题
    2000: 开始→运行,输入regsvr32 thumbvw.dll
    XP: 开始→运行,输入regsvr32 shimgvw.dll

    六、让WMP播放器支持RM格式
    很多朋友喜欢用Windows Media Player(以下简称WMP)播放器,但是它不支持RM格式,难道非得安装其它播放软件吗?笔者有办法。

    以Win XP为例,首先下载一个RM格式插件,解压缩后得到两个文件夹: Release(用于Windows 9x)和Release Unicode (用于Windows 2000/XP);将Release Unicode文件夹下的RealMediaSplitter.ax文件拷贝到“系统盘符\WINDOWS\System32\”目录下;在“开始→运行”中键入“regsvr32 RealMediaSplitter.ax”,点击“确定”即可。接着下载解码器,如Real Alternative,安装后就能用WMP播放RM格式的影音文件了。

    七、让WMP9的播放器出现

    有些音乐网页的在线点歌需要用到Media Player,有的朋友明明安装了WMP9,但在线听音乐却只看到枯燥的WMP6播放器面板,想让漂亮的WMP9面板出现,当然没问题的。

    常见问题的操作系统多数WIN 98,先关闭IE,再在“开始→运行”中键入“regsvr32 wmpdxm.dll”,点击“确定”即可。

    八、解决打开系统功能时无反应regsvr32 shdocvw.dll

    作用:
    有时从开始菜单里点击XP系统的搜索功能、帮助和支持或管理工具等,但就是无任何反应,这是它们的打开方式缺少关联,所以我们只要用regsvr32注册它们需要调用的动态连接库文件就行了。

    九、添加/删除程序打不开了regsvr32 appwiz.cpl 
    regsvr32 mshtml.dll 
    regsvr32 jscript.dll 
    regsvr32 msi.dll 
    regsvr32 "c:\program files\common files\system\ole db\oledb32.dll"
    regsvr32 "c:\program files\common files\system\ado\msado15.dll"
    regsvr32 mshtmled.dll 
    regsvr32 /i shdocvw.dll
    regsvr32 /i shell32.dll

    作用:
    当打开控制面板中的添加/删除程序时,双击它的图标后无反应,或者打开后自动关闭了,尝试使用以上命令可以解决。

    十、XP的用户帐户打不开regsvr32 nusrmgr.cpl
    regsvr32 mshtml.dll
    regsvr32 jscript.dll
    regsvr32 /i shdocvw.dll

    十一、防范网络脚本病毒有新招
    regsvr32 /u scrrun.dll 禁用FSO对象
    regsvr32 scrrun.dll 使用FSO对象

    十二、解决Windows无法在线升级的问题regsvr32 wupdinfo.dll

    以下症状我把它称作IE的活动脚本漏洞,虽然这两个命令能修复,但治标不治本,我建议遇到此问题的朋友到微软网站进行IE安全更新,即打漏洞补丁。

    regsvr32 jscript.dll
    regsvr32 vbscript.dll

    作用:
    1、跟上面讲的修复IE浏览器方法配合使用(可以不配),可以很好的解决浏览某些网页无法正常显示和功能不正常,如:
    a.不显示某些验证码
    b.不显示某些动态图片
    c.不显示某些论坛的帖子列表
    d.论坛快速跳转功能无用
    e.论坛发贴时按Ctrl+Enter提交无反应

    2、修复个别窗口空白,如XP的‘搜索’功能的搜索助理操作面板空白、系统还原页面空白和用户帐户页面空白等。(可修复把握度100%)

    3、解决windows media player 9或以上版本打开时提示‘出现内部应用程序错误’。(可修复把握度100%)

    4、可以修复win 2000的‘添加/删除程序’打开后一片空白。(可修复把握度99%)

    5、解决win 2000以WEB方式查看Program Files文件夹和Winnt文件夹时看不到任何文件,以及‘控制面板’的图标跑到左边去的问题。

    6、解决网页上网际快车的右键菜单功能无法使用。
    在网站中,当右键点某个‘下载连接’时,会弹出菜单,选择‘使用网际快车下载’会再弹出FLASHGET的下载任务页面,如果发现该功能无反应,那就可能是这个原因:原来这项菜单是调用了FLASHGET目录下的jc_link.htm文件,这个文件是用VB语言编写的,所以其作用丢失是动态连接库vbscript.dll没有注册和调用到。
    不过这只是原因之一.
    loading...
  • 2005-08-23

    6.20

    父亲 从小在我的印象中是很模糊的
    他很少在家
    母亲也一样
    两个每天都忙于工作,我的童年就是这样一个人过的
    很多时候我都是默默地呆在家里 躺在家里的后院看湛蓝的天
    等我上学了我就萌生了在外的念头
    很多次我逃课自己一个人踩着单车跑到周边的小城镇逛
    也许你很难想到一个8.9岁的小孩敢独自去另外一个陌生的地方
    这种情况持续了很长的一段时间 
    倒不是老师不想管我 而是我的成绩好的出奇 老师也就不过问
    loading...
  • 2005-08-23

    江南好

    春风起
    重梦回少年
    戏水钩鱼欢有限
    张罗�淙咐治薇�
    何日再从前
    loading...
  • 2005-08-23

    6月

    六月是一个离别的季节
    整个校园内弥漫着一丝丝的忧愁
    虽说那鲜花还是那么娇艳的开着
    每次经过正楼的广场都会看到师兄师姐留下在校园最后的回忆
    莫名的我也会鼻子一酸 因为我高考后的情况跟他们如出一辙
    loading...
  • 2005-08-23

    7.30

    很多时候我们都在怀念着过去
    尽管有些是痛苦的回忆
    但也许就是这些回忆让我们开始真正的成长 蜕变
    我们渴望回到过去,并不是想重来一次i
    更多的是向保持那份年少的无知
    因为那样的自己才是自由自在的
    活在属于自己的空间
    loading...
  • 2005-08-23

    7.15

    在这一刻我只喜爱那个当你三小时的男朋友
    让你在这段时间里有可以依靠的肩膀
    让你可以安心的睡觉
    或许我们都还彼此不知对方的名字
    但这并不重要
    因为我们本来就是两条不相交的平行线
    能相交只是上帝一时的玩笑
    很快的我们就要沿着自己的轨迹走彼此的路了
    loading...
  • 2005-08-23

    8.23

    古代文学
    古代汉语
    现代文学
    当代文学
    写作

    loading...
  • 2005-08-01

    7.31.1

    昨天很早就坐上了深圳的车,但由于路上塞车再加上下雨的原因。到了11点多才到了深圳大学。
    我并没有逗留多久。进入市区。现在的深圳跟我印象中的有了点差别。
    深圳正在逐步的成为一个可以让人安家的地方,更多的给人是一种安逸的气氛
    loading...
  • 2005-07-31

    7.31

    昨天跟公司请了一天的假期,去了深圳,深圳,我已经有九年没有来了。很多次都是都是和深圳擦肩而过。每次来回广州都是匆匆的绕着深圳的外围,只能远远的看着这座我陌生而有点向往的城市。同学都希望我能来,来看看这美丽的城市,这城市给我的感觉总是有种匆忙的感觉,物质极度丰富,但给人们更多的是压力。每个人都在为生活奔忙着。
    loading...
  • 2005-07-25

    爱情

    爱情
    爱情是唯一的也是崇高的,像一块温润莹洁的蓝田玉,哪怕碎了,她的质地颜色始终不变.宁可守着破碎的玉守着残缺的爱也不肯沦为一块完整的瓦!
    在他们看来瓦片是世俗的浅薄的随意的,他们不肯把爱情的目标降低更换,这份执著坚韧令每一个迁就瓦片的俗人透彻心扉的感动且自卑,继而自我宽慰,弱水三千,何不再取一瓢饮?






                                          奕~

    loading...
  • 2005-07-25

    7.25

    她的牙齿很白,今晚我才发觉她笑起来是那么的迷人,她的嘴唇有淡淡的粉红色,看起来很亮,让我不禁的多看了几眼,有几次还看得发了呆,整个人就在那里发蒙着,直到她在我的面前摆了摆手我才知道我的失态,她应该没有去在意这些小事吧?今晚我才知道原来她是那么的喜欢敲人家的头,因为我每开一个玩笑就会被她轻轻的敲了一下头,就这样她的手时不时的落在我的头上,让我措不及防...

    loading...
  • 2005-07-22

    7.22

    今天很在早就起床了
    外面的施工声音太吵了
    根本就睡不着
    起来的时候很没精神
    昨晚是太兴奋了,睡不着
    因为终于要上班了
    这是我的第一次上班
    早上呢,就我一个人先起来了
    收拾了下东西就出去了
    食堂没有开,只能在小卖部买了个干包垫下肚子了
    到那边的时候还是迟到了
    因为下雨
    有点不好意思 老板没有说什么
    其实今天没有什么事情干 就在那里干站着 我自己都有点闷了 
    末了 晚上本来是七点下班的 但老板说今天没有什么生意 就让我们先走了
    不过明天要早到 呵呵
    没想到我的第一次工作的第一天就是这样过的
    loading...
  • 2005-07-21

    7.21

    今天她回家了

    在学校的这段日子只有她独自一个在宿舍,而我又回家了。心里很不是滋味

    本来我是打算多住几天再回校,看来现在是不行了。因为我不想她孤单。

    于是我今天我就搭上了回校的车。在我刚到校的时候她给了我信息。她决定回家了

    而且已经买好了车票。并且在车站了

    我很郁闷



    loading...
  • 2005-07-21

    杀毒引擎机制

    杀毒软件的引擎(原作者:走走看看,完整版本)

    郑重声明:本贴原作者为走走看看

    [color=teal]为防止误解,特作如下声明:
    1.鉴于个人能力有限,文中大量借用了业已在病毒界获得公认的两篇文章:先进杀毒引擎的设计原理 ,流行杀毒软件的引擎设计 。
      2.为便于理解,文中很多词语未使用严格的工业研发用语。比如杀毒引擎的前端正式名称为‘基于初步预扫描的(文件)对象汇入工程部分“。很多工业用语听起来很拗口,自己变通了一下,感兴趣者可查阅L.Felly:系统的安全与防护 中的有关章节。
      3.我认为现今在全球流行的几款杀毒软件在技术上并不存在谁的技术远远领先的问题,没有必要过与赞扬那一款杀毒软件,自己用着高兴就好。文中对某些杀软的介绍比较详细,主要是因为它的资料较多,有东西可写,没有其余的意思。
      4.到现在为止,我已经用过几乎所有的杀毒软件(论坛上提到的)
      5. 我个人非常不喜欢设计病毒,私下写过的几个纯粹是写着玩,大部分时候是MM生气的时候写个玩笑程序让她高兴用的
      6.很长时间不在专业病毒论坛上走动了。我认为如果因为喜欢程序设计看一下病毒的代码是可以的,当出于其他目的的时候,还是收手吧。
      7.鉴于个人能力原因,有一部分是MM写的,MM很漂亮,也很娇气,但对我基本上言听计从,必经一起走过了十几年了。原帖子中有一部分是错误的,已经由她修改过。
      8.文中有一部分内容来自一个朋友提供的杀毒软件公司的开发文档,我已经大幅改动过。
      9.本人是学生,且正在忙于考G,上网的时间并不怎么多,因此很多问题可能并不能及时作出解答,还望原谅。   
      10.我一直在使用的杀毒软件(其余的半路都卸了):SAV9.0,KV2004(两套系统)。在我看来杀毒软件就只是一款软件罢了,没必要大家为用什么争来争去,自己感觉好就行了,争论的时间还不如用来多陪陪女友呢。
                                  正文部分
      文章比较长,加之本人写作水平有限和某些技术文档需要核实,只能写一段发一段,还望大家原谅。有误之处,敬请指出,谢谢!(各段数值标出,每次均对该文件进行编辑.
    1.什么是杀毒软件引擎,与病毒库的关系?
      首先必须指出杀毒软件的引擎与其病毒库并没有什么直接的关系。杀毒引擎的任务和功能非常简单,就是对于给定的文件或者程序进程判断其是否是合法程序(对应于杀毒软件厂商自己定义的正常和非异常程序规范而言。正常的程序规范是指在程序所在系统平台上操所系统本身洗净有定义的或者业界已经公认的程序行为过程,比如操作系统正常运行就必须要求应用程序与系统核心进行进程响应并与交换相关数据。非异常程序活动是指可能存在非法程序操作结果但能够以较高的置信度确定其非非法程序活动规范的。一般情况下,相关文件的复制,移动,删除等都奔包括在该界定范围内)。
      我们知道病毒的最终目的有些是与合法活动很类似的,在这种情况下,要求软件厂商必须自己有一个行为规范界定规则,在一个给定的范围和置信度下,判断相关操作是否为合法。在这方面,各个厂商的界定是有区别的,一般而言非美国厂商界定是非常严格的,只有有很高的置信水平的程序行为,他们才判别为非病毒操作。记得前一阵论坛上有人给了四段简单的代码,很多杀毒软件将其判为病毒或有病毒性质的文件行为,实际上看那几段代码可以知道,其结果并不足以视之为病毒。美国厂商一般判断比较复杂,这主要由于美国市场上的杀毒软件引擎来源比较复杂,比如诺顿,有足够的技术资料确信它的杀毒软件引擎是自成体系的,而mcafee则存在一定的外界技术引进(收购所罗门)。
      用简单的话说,杀毒引擎就是一套判断特定程序行为是否为病毒程序(包括可疑的)的技术机制。一个完整的技术引擎遵守如下的行为过程:
          1.非自身程序行为的程序行为捕获。包括来自于内存的程序运行,来自于给定文件的行为虚拟判断,来自于网络的动态的信息等等。一般情况下,我们称之为引擎前端。捕捉的方法非常多,除诺顿以外的杀毒软件采用的都是行为规范代码化的方法。诺顿由于与微软有这远远高于其它厂商合作关系,其实现过程比较独特,另有叙述。
          2.基于引擎机制的规则判断。这个环节代表了杀毒引擎的质量水平,一个好的杀毒引擎应该能在这个环节发现很多或者称之为相当规模的病毒行为,存而避免进入下一个判断环节。传统的反病毒软件引擎使用的是基于特征码的静态扫描技术,即在文件中寻找特定十六进制串,如果找到,就可判定文件感染了某种病毒。但这种方法在当今病毒技术迅猛发展的形势下已经起不到很好的作用了。为了更好的发现病毒,相继开发了所谓的虚拟机,实时监控等相关技术。这个环节被叫做杀毒软件引擎工作的核心层。
          3.引擎与病毒库的交互作用。这个过程往往被认为是收尾阶段,相对于前两个环节,这个阶段速度是非常慢的,杀毒引擎与要将非自身程序行为过程转化为杀毒软件自身可识别的行为标识符(包括静态代码等),然后与病毒库中所存贮的行为信息进行对应,并作出相应处理。当然必须承认,当前的杀毒软件对大量病毒的识别都是在这个阶段完成的。因此一个足够庞大的病毒库往往能够弥补杀毒软件引擎的不足之处。但是必须意识到,如果在核心层阶段就可以结束并清除病毒程序,那么杀毒软件的工作速度将会大幅提升。“很可惜的是,当前我们没有足够聪明的杀毒引擎来完成这个过程”,这就是为什么有病毒库的原因。
        诺顿是微软最高级的安全方面核心合作厂商,因此它的杀毒软件在某些方面工作比较特殊。比如在杀毒软件的安装,使用和功能实现方面,大部分厂商采用的是中间件技术,在系统底层与非自身应用程序之间作为中间件存在并实现其功能;另有一些厂商使用的是应用程序或者嵌入技术,相对而言这种方法安全性较低;诺顿和 mcafee实现方式比较相似,诺顿采用了基于系统最底层的系统核心驱动,这种实现方式是最安全的或者说最高级的实现方式,当然这需要微软的系统源代码级的支持(要花许多money),业界公认,这是最稳定的实现方法,但从目前而言,只诺顿一家。Mcafee实现方式与诺顿很接近,一般称之为软件驱动。相当于在系统中存在一个虚拟“硬件”,来实现杀毒软件功能。这些实现方式关系着杀毒引擎对程序行为进行捕捉的方式。
        我们使用的intel系的处理器有两个 ring层,对应两个层,微软的操作系统将系统中的所有行为分为如下几个层:
            1.最底层:系统核心层,这个层的所有行为都由操作系统已经内置的指令来实现,所有外界因素(即使你是系统管理员)均不能影响该层的行为。诺顿的核心层既工作在这个层上。
            2.硬件虚拟层,一般称之为HAL。为了实现硬件无关性,微软设计了该层。所有的外部工作硬件(相对于系统核心而言)都进入HAL,并被HAL处理为核心层可以相应的指令。我们所使用的硬件的驱动程序既工作在该层上。当外界硬件存在指令请求时,驱动程序作出相关处理后传给核心层。如果无与之对应的驱动相应,那么将按照默认硬件进行处理。好像安全模式下硬件的工作就被置于默认硬件模式。Mcafee被认为工作与该层上。
          3.用户层(分为两个子层,不详细叙述,感兴趣的可以查阅《windows xp入门到精通》(有中文版),第二部分四节有叙述)。我们所知的大部分杀毒软件既工作与该层上。一个完整的程序行为请求是如下流程:位于3户层上的应用程序产生指令行为请求,被传递至2HAL进行处理,最后进入1最底层后进入CPU的指令处理循环,然后反向将软件可识别的处理结果经1-2-3再响应给应用程序。对于诺顿而言,其整个工作过程如下:3-2-1,完成;mcafee:3-2-1-1-2,完成:其余:3-2-1-1-2-3,完成;这个环节代表了杀毒软件引擎的前端行为规范的获得。只从这个过程而言,诺顿和mcafee是比较先进的。(具体的系统与CPU的ring()的对应,记不清楚了。 WinNT时代,微软的NT系统被设计有与四个ring()层相对应,RISC系列的处理器有四个ring。因此现在的大部分杀毒软件是不能工作与NT上的。具体的CISC和RISC的ring()数我记得可能有误,反正是一个2ring(),一个4ring().)。
      尽管比较先进的工作方式给诺顿和mcafee带来了较高的系统稳定性(HAL层很少出现问题,最底层出问题的几率接近于零),较快的响应速度(减少了环节),但同时也带来了一些问题:1.资源占用比较厉害。在mcafee上体现的不是很明显,在诺顿上表现非常明显。因为对于越底层的行为,硬件资源分配越多。最好资源的是什么?当然是操作系统。应为它最最底层。2.卸载问题。卸载底层的组件出问题的概率是相对比较高的,因此诺顿的卸载比较慢,偶尔还出问题。
        有人质疑由于微软操作系统的不稳定性是否会拖累诺顿,想开发人士询问后得知,微软操作系统的内核层设计是非常优秀的,很多时候操作系统的不稳定性来源于以下几个方面:
          1.应用程序设计不合理,许多程序设计者根本就未读过微软的32位程序设计指南,所设   计的程序并不严格符合微软规范。我们看到很多软件多年前设计还能运行于最新的xp平台,原因很简单:这个软件在设计时完全遵循了微软的程序设计规范。
          2. 驱动程序的编写有问题,与HAL层有冲突。
          因此认为微软的操作系统将会影响诺顿的稳定性是不合理的。
      注:刚才问了一下偶MM,她告诉我应该是CISC有四个ring(),RISC有两个ring().对应于系统的最低层而言,工作在ring0()上。应用程序工作在ring3()上 。偶的记忆力比较差,文中可能有部分技术错误,请原谅。
        业界有人认为,先进杀毒软件的引擎设计已经日趋复杂,类如诺顿这一类的厂商其产品的引擎应该已经覆盖了操作系统的各个层级,以提高防护能力。在一篇文档中有程序员提出有足够的信息认为诺顿,mcafee,趋势的产品自己修改了标准的系统相关协议,比如TCP/IP等,以达到所谓的完整防护的目的。NOD32的一篇官方文档(说实话,我没有看到过)指出有必要全面更新(说白了就是修改)系统的诸多协议,以达到最快的速度和杀毒效果。
    要讨论怎样反病毒,就必须从病毒技术本身的讨论开始。正是所谓“知己知彼,百战不殆”。很难想象一个毫无病毒写作经验的人会成为杀毒高手。目前国内一些著名反病毒软件公司的研发队伍中不乏病毒写作高手。只不过他们将同样的技术用到了正道上,以‘毒’攻‘毒’。当今的病毒与DOS和WIN3.x时代下的从技术角度上看有很多不同。最大的转变是:引导区病毒减少了,而脚本型病毒开始泛滥。原因是在当今的操作系统下直接改写磁盘的引导区会有一定的难度(DOS则没有保护,允许调用INT13直接写盘),而且引导区的改动很容易被发现,并且微软在设计操作系统时加强了对引导区的程序行为管理,写一个完美的引导区病毒难度很大,所以很少有人再写了;而脚本病毒以其传播效率高且容易编写而深得病毒作者的青睐。但是最最落后的杀毒引擎也就是只基于静态代码的杀毒引擎都能干掉该种病毒(病毒库搞好就行)。
        要讨论的技术主要来自于二进制外壳型病毒(感染文件的病毒),并且这些技术大都和操作系统底层机制或386以上CPU 的保护模式相关,值得研究。DOS下的外壳型病毒主要感染 16位的COM或EXE文件,由于DOS没有(文件和引导区)保护,它们能够轻松地进行驻留,减少可用内存(通过修改MCB链),修改系统代码,拦截系统服务或中断。而到了WIN9X和WINNT/2000时代,搞个运行其上的32位WINDOWS病毒变得难了点。由于存在页面保护,你不可能修改系统的代码页(如果你强到连操作系统代码都能改,偶无话可说)。由于I/O许可位图中的规定,你也不能进行直接端口访问(29A的一个美女[听说叫 Mercy.Chan]可以通过汇编方法直接访问端口的目的,但是没有见过给出事例代码。知道得给介绍一下她的程序代码)WINDOWS中你不可能象在 DOS中那样通过截获INT21H来拦截所有文件操作。总之,你以一个用户态权限运行,你的行为将受到操作系统严格的控制,不可能再象DOS下那样为所欲为了(在xp中,这种权限管理极为严格,大致分成了4-8个等级)。   WINDOWS下采用的可执行文件格式和DOS下的 EXE截然不同(普通程序采用PE格式,驱动程序采用LE),所以病毒的感染文件的难度增大了(PE和LE比较复杂,中间分了若干个节,如果感染错了,将导致文件不能继续执行)。当今病毒的新技术太多,随便介绍几个。
      1.系统核心态病毒
        386及以上的CPU实现了4个特权级模式(WINDOWS只用到了其中两个),其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的用户程序使用(我想知道一个问题,ring1,2是干什么的?),它们工作在用户态。运行于处理器核心态的代码不受任何的限制,可以自由地访问任何有效地址,进行直接端口访问。而运行于用户态的代码则要受到处理器的诸多检查,它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务状态段(TSS)中I/O许可位图(I/O Permission Bitmap)中规定的可访问端口进行直接访问(此时处理器状态和控制标志寄存器EFLAGS中的IOPL通常为0,指明当前可以进行直接I/O的最低特权级别是Ring0)。以上的讨论只限于保护模式操作系统,象DOS这种实模式操作系统则没有这些概念,其中的所有代码都可被看作运行在核心态。既然运行在核心态有如此之多的优势,那么病毒当然没有理由不想得到Ring0。处理器模式从Ring3向Ring0的切换发生在控制权转移时,有以下两种情况:访问调用门的长转移指令CALL,访问中断门或陷阱门的INT指令。具体的转移细节由于涉及复杂的保护检查和堆栈切换,不再赘述,请参阅相关资料。现代的操作系统通常使用中断门来提供系统服务,通过执行一条陷入指令来完成模式切换,在INTEL X86上这条指令是INT,如在WIN9X下是INT30(保护模式回调),在LINUX下是INT80,在WINNT/2000下是INT2E。用户模式的服务程序(如系统DLL)通过执行一个INTXX来请求系统服务,然后处理器模式将切换到核心态,工作于核心态的相应的系统代码将服务于此次请求并将结果传给用户程序。
        在即将发布的xp-sp2中采用所谓增强的内存页面保护将会更为严格的控制用户权限,据说在访问内存地址时得到的将是经过系统映射处理的对应内存范围,在内存实地址与用户层之间,搞了一个类似于转换协议的东西,害的很多软件都不能运行,应为他们总是试图按照原有的HAL层访问规则进行工作。
        2.驻留病毒
        驻留病毒是指那些在内存中寻找合适的页面并将病毒自身拷贝到其中且在系统运行期间能够始终保持病毒代码的存在。驻留病毒比那些直接感染(Direct- action)型病毒更具隐蔽性,它通常要截获某些系统操作来达到感染传播的目的。进入了核心态的病毒可以利用系统服务来达到此目的,如CIH病毒通过调用一个由VMM导出的服务VMMCALL _PageAllocate在大于0xC0000000的地址上分配一块页面空间。而处于用户态的程序要想在程序退出后仍驻留代码的部分于内存中似乎是不可能的,因为无论用户程序分配何种内存都将作为进程占用资源的一部分,一旦进程结束,所占资源将立即被释放。所以我们要做的是分配一块进程退出后仍可保持的内存。
    病毒写作小组29A的成员GriYo 运用的一个技术很有创意:他通过CreateFileMappingA 和MapViewOfFile创建了一个区域对象并映射它的一个视口到自己的地址空间中去,并把病毒体搬到那里,由于文件映射所在的虚拟地址处于共享区域(能够被所有进程看到,即所有进程用于映射共享区内虚拟地址的页表项全都指向相同的物理页面),所以下一步他通过向Explorer.exe中注入一段代码(利用WriteProcessMemory来向其它进程的地址空间写入数据),而这段代码会从Explorer.exe的地址空间中再次申请打开这个文件映射。如此一来,即便病毒退出,但由于Explorer.exe还对映射页面保持引用,所以一份病毒体代码就一直保持在可以影响所有进程的内存页面中直至Explorer.exe退出(我直接试过该种方法,在xp下注意要写一个空循环语句,以免被踢出处理队列)。
    另外还可以通过修改系统动态连接模块(DLL)来进行驻留。WIN9X下系统DLL(如Kernel32.dll 映射至BFF70000)处于系统共享区域(2G-3G),如果在其代码段空隙中写入一小段病毒代码则可以影响其它所有进程。但Kernel32.dll 的代码段在用户态是只能读不能写的。所以必须先通过特殊手段修改其页保护属性;而在WINNT/2000/xp系统DLL所在页面被映射到进程的私有空间(如 Kernel32.dll 映射至77ED0000)中,并具有写时拷贝属性,即没有进程试图写入该页面时,所有进程共享这个页面;而当一个进程试图写入该页面时,系统的页面错误处理代码将收到处理器的异常,并检查到该异常并非访问违例,同时分配给引发异常的进程一个新页面,并拷贝原页面内容于其上且更新进程的页表以指向新分配的页。这种共享内存的优化给病毒的写作带来了一定的麻烦,病毒不能象在WIN9X下那样仅修改Kernel32.dll一处代码便可一劳永逸。它需要利用 WriteProcessMemory来向每个进程映射Kernel32.dll的地址写入病毒代码,这样每个进程都会得到病毒体的一个副本,这在病毒界被称为多进程驻留或每进程驻留(Muti-Process Residence or Per-Process Residence )。
      文中列举方法在xp-sp1下略作修改即可使用 ,大部分为在代码段内加入空循环 。在sp2下,很多时候报如下类型的错误不可访问的内存地址段.........。
            
    --------------------------------------------------------------------------------


    在原来的帖子中我援引了另一篇文档中的例子,但经MM告知那些挂钩-捆绑等方法在如今的设计中并不是很受欢迎,原因在于新的操作系统许多函数规则是不可预知的,也就是所谓的”黑箱“设计使得设计人员更加偏爱系统级别的线程捆绑或者更加直接的接管权限控制的方法,采用最复杂的线程捆绑技术甚至可以使杀毒软件和防火墙得不到足够的信息来区分一个程序是否合法。更高级别的抢夺权限控制甚至可以结束所有杀毒软件的进程,包括卡巴斯基所采用的受保护的内存线程技术。
      尽管微软隐藏了很多系统函数,但是经过很多高手的努力,许多隐藏的系统函数已经被找出,并且微软也有意识的减少隐藏函数的数量。在前段时间网上泄漏的2000的部分代码中,其中关于磁盘文件读写的部分(大小为700M的那个压缩包里标号为115BH的那个文件其中的第三节子代码)其中有很多进程是微软的开发文档中是没有给出介绍的,不知道以后会不会有人利用这些东西写病毒。对病毒稍微有些常识的人都知道,普通病毒是通过将自身附加到宿主尾部(如此一来,宿主的大小就会增加),并修改程序入口点来使病毒得到击活。但现在不少病毒通过使用特殊的感染技巧能够使宿主大小及宿主文件头上的入口点保持不变。附加了病毒代码却使被感染文件大小不变听起来让人不可思议,其实它是利用了PE文件格式的特点:PE文件的每个节之间留有按簇大小对齐后的空洞,病毒体如果足够小则可以将自身分成几份并分别插入到每个节最后的空隙中,这样就不必额外增加一个节,因而文件大小保持不变。著名的CIH病毒正是运用这一技术的典型范例(它的大小只有1K左右)。
    病毒在不修改文件头入口点的前提下要想获得控制权并非易事:入口点不变意味着程序是从原程序的入口代码处开始执行的,病毒必须要将原程序代码中的一处修改为导向病毒入口的跳转指令。原理就是这样,但其中还存在很多可讨论的地方,如在原程序代码的何处插入这条跳转指令。一些查毒工具扫描可执行文件头部的入口点域,如果发现它指向的地方不正常,即不在代码节而在资源节或重定位节中,则有理由怀疑文件感染了某种病毒。所以刚才讨论那种病毒界称之为EPO(入口点模糊)的技术可以很好的对付这样的扫描,同时它还是反虚拟执行的重要手段。
      另外值得一提的是现在不少病毒已经支持对压缩文件的感染。如Win32.crypto病毒就可以感染ZIP,ARJ,RAR,ACE,CAB 等诸多类型的压缩文件。这些病毒的代码中含有对特定压缩文件类型解压并压缩的代码段,可以先把压缩文件中的内容解压出来,然后对合适的文件进行感染,最后再将感染后文件压缩回去并同时修改压缩文件头部的校验和。目前不少反病毒软件都支持查多种格式的压缩文件,但对有些染毒的压缩文件无法杀除。原因我想可能是怕由于某种缘故,如解压或压缩有误,校验和计算不对等,使得清除后压缩文件格式被破坏。病毒却不用对用户的文件损坏负责,所以不存在这种担心。
      个人看来,目前的杀毒软件在对待加壳病毒的时候表现比较差的为瑞星,怀疑瑞星的杀毒引擎对加壳的东西放映不灵敏,因此瑞星自己加壳了很多病毒放到病毒库里,我曾使用一些很少用的加壳方式对某些普通病毒加壳,结果瑞星没查出来,有待改进。
      以上关于病毒的相关文字均来源于 某病毒论坛的文章 ,我个人作了少量修改 。再往下为引擎部分的实现 。
    杀毒引擎目前主流有两种实现方式:1.虚拟机技术 2.实时监控技术 3.智能码标识技术
    4.行为拦截技术 3.4.为最近两年搞出来的技术。3的目的是提高杀毒速度并且预防未知病毒,但就现实而言,除了东方卫士试验了一下(并且不成功),其余厂商未开发完全基于该技术的引擎,诺顿的开发人员认为:“没有足够的技术手段来实现文中所提出的杀毒理念(翻译的可能有不准确之处。‘文中’是指智能码标示技术的理论基础:IBM :Another way to the end (实现目的的另一种方式),在该文中提出了基于预定规则的智能杀毒技术)”。行为拦截技术(或者别的什么智能杀毒技术)也是一种预防未知病毒的方法,与虚拟机技术相似,通过对程序行为的分析来判断其是否为病毒。
        对于未知病毒的判断实际上代表着杀毒软件厂商在引擎研究方面的最高能力。业界公认,防止未知病毒是“代表研究水平的”。平心而论,非美国厂商在这方面能力较差。业界对于防止未知病毒能力是按照如下方法衡量的:以评测当日的杀毒软件最新版本为该厂商的供测试版本,未知病毒由如下而来: 1.病毒作者提供。有些病毒作者在将自己的病毒发布以前总爱送给一些业界的安全杂志供其评测(最佩服这种人)2.大部分真正的业界安全杂志都有自己的研究实验室,他们自己的研究人员会根据最新的趋势和技术手段及工具写一些病毒。一般情况下,这些病毒是不会流到网上去的。3.假病毒。一些很类似于病毒行为的文件,程序等。测试的时候病毒库被置空(就是杀毒软件试图调用病毒库时采用程序方法向其返回一个空结果),在这种情况下进行测试。如果有人有兴趣,可以到病毒论坛上搞点新手写的小病毒(一般也就100-200行),弄上几十个拿自己的杀毒软件试一试,就会发现在平均状态下诺顿病毒库被置空时起对未知病毒判断能力还是挺强的,怎么着也到了x%,(x为两位数),很多杀毒软件结果挺惨的,尤其在对付比较复杂的蠕虫病毒时,某厂商的产品近乎全军覆没。下面对虚拟机和实时监控进行介绍。由于大家认为在文中加入程序代码看着很累,因此不再给出技术实现代码,其实根据原理你自己也可以写出来。
        虚拟机,在反病毒界也被称为通用解密器,已经成为反病毒软件中最重要的部分之一虚拟机的概念和它与诸如Vmware和WIN9X下的VDM(DOS虚拟机,它用来在32位保护模式环境中运行16实模式代码)是有区别的。其实这些虚拟机的设计思想是有渊源可寻的,都来自于IBM的一批研究人员搞的一套东西。 Vmware作为原操作系统下的一个应用程序可以为运行于其上的目标操作系统创建出一部虚拟的机器,目标操作系统就象运行在单独一台真正机器上,丝毫察觉不到自己处于Vmware的控制之下。当在Vmware中按下电源键(Power On)时,窗口里出现了机器自检画面,接着是操作系统的载入,一切都和真的一样。而WIN9X为了让多个程序共享CPU和其它硬件资源决定使用VMs(所有Win32应用程序运行在一部系统虚拟机上;而每个16位DOS程序拥有一部DOS虚拟机),winxp是采用区域内存访问来实现16位程序支持的。 VM是一个完全由软件虚构出来的东西,以和真实电脑完全相同的方式来回应应用程序所提出的需求。从某种角度来看,你可以将一部标准的PC的结构视为一套 API。这套API的元素包括硬件I/O系统,和以中断为基础的BIOS和MS-DOS。WIN9X常常以它自己的软件来代理这些传统的API元素,以便能够对珍贵的硬件多重发讯。在VM上运行的应用程序认为自己独占整个机器,它们相信自己是从真正的键盘和鼠标获得输入,并从真正的屏幕上输出。稍被加一点限制,它们甚至可以认为自己完全拥有CPU和全部内存。
        查毒的虚拟机并不是象某些人想象的:如Vmware一样为待查可执行程序创建一个虚拟的执行环境,提供它可能用到的一切元素,包括硬盘,端口等,让它在其上自由发挥,最后根据其行为来判定是否为病毒。当然这是个不错的构想,但考虑到其设计难度过大(需模拟元素过多且行为分析要借助人工智能理论),因而只能作为以后发展的方向。就目前可以知道的信息而言,卡巴斯基在这方面做得还可以,mcafee的新产品中加入了一种溢出保护技术,本质上而言也是一种所谓的虚拟技术。查毒的虚拟机是一个软件模拟的CPU,它可以象真正CPU一样取指,译码,执行,它可以模拟一段代码在真正CPU上运行得到的结果。给定一组机器码序列,虚拟机会自动从中取出第一条指令操作码部分,判断操作码类型和寻址方式以确定该指令长度,然后在相应的函数中执行该指令,并根据执行后的结果确定下条指令的位置,如此循环反复直到某个特定情况发生以结束工作,这就是虚拟机的基本工作原理和简单流程。设计虚拟机查毒的目的是为了对付加密变形病毒,虚拟机首先从文件中确定并读取病毒入口处代码,然后以上述工作步骤解释执行病毒头部的解密段(decryptor),最后在执行完的结果(解密后的病毒体明文)中查找病毒的特征码。这里所谓的“虚拟”,并非是创建了什么虚拟环境,而是指染毒文件并没有实际执行,只不过是虚拟机模拟了其真实执行时的效果。这就是虚拟机查毒基本原理。曾经跟搞杀毒的技术人员探讨是否可以采用模拟实际执行的方法来搞一套杀毒软件,回答是微软可以,因为微软可以在系统底层搞一套硬件虚拟层,来实现硬件虚拟。我忽然想到,如果微软真的搞杀毒软件,其实无论别的杀毒软件公司多么强,大家都得彻底玩完。
      早期病毒没有使用任何复杂的反检测技术,如果拿反汇编工具打开病毒体代码看到的将是真正的机器码。因而可以由病毒体内某处一段机器代码和此处距离病毒入口(注意不是文件头)偏移值来唯一确定一种病毒。查毒时只需简单的确定病毒入口并在指定偏移处扫描特定代码串。这种静态扫描技术对付普通病毒是万无一失的。
      随着病毒技术的发展,出现了一类加密病毒。这类病毒的特点是:其入口处具有解密子(decryptor),而病毒主体代码被加了密。运行时首先得到控制权的解密代码将对病毒主体进行循环解密,完成后将控制交给病毒主体运行,病毒主体感染文件时会将解密子,用随机密钥加密过的病毒主体,和保存在病毒体内或嵌入解密子中的密钥一同写入被感染文件。由于同一种病毒的不同传染实例的病毒主体是用不同的密钥进行加密,因而不可能在其中找到唯一的一段代码串和偏移来代表此病毒的特征,似乎静态扫描技术对此即将失效。但仔细想想,不同传染实例的解密子仍保持不变机器码明文(从理论上讲任何加密程序中都存在未加密的机器码,否则程序无法执行),所以将特征码选于此处虽然会冒一定的误报风险(解密子中代码缺少病毒特性,同样的特征码也会出现在正常程序中),但仍不失为一种有效的方法。
      由于加密病毒还没有能够完全逃脱静态特征码扫描,所以病毒写作者在加密病毒的基础之上进行改进,使解密子的代码对不同传染实例呈现出多样性,这就出现了加密变形病毒。它和加密病毒非常类似,唯一的改进在于病毒主体在感染不同文件会构造出一个功能相同但代码不同的解密子,也就是不同传染实例的解密子具有相同的解密功能但代码却截然不同。比如原本一条指令完全可以拆成几条来完成,中间可能会被插入无用的垃圾代码。这样,由于无法找到不变的特征码,静态扫描技术就彻底失效了。在这种情况下,虚拟机技术将会派上用场。
        实时监控技术其实并非什么新技术,早在DOS编程时代就有之。只不过那时人们没有给这项技术冠以这样专业的名字而已。在WINDOWS下要实现实时监控决非易事,普通用户态程序是不可能监控系统的活动的,这也是出于系统安全的考虑。病毒实时监控(For WIN9X&WINNT/2000)都使用了驱动编程技术,让工作于系统核心态的驱动程序去拦截所有的文件访问。当然由于工作系统的不同,驱动程序无论从结构还是工作原理都不尽相同的,当然程序写法和编译环境更是千差万别了,上面提到的病毒实时监控其实就是对文件的监控,说成是文件监控应该更为合理一些。除了文件监控外,还有各种各样的实时监控工具,它们也都具有各自不同的特点和功用。现在流行的什么网络监控,邮件监控基本上是对文件监控的改进,革命性的改动没有。
             
    --------------------------------------------------------------------------------


    病毒实时监控其实就是一个文件监视器,它会在文件打开,关闭,清除,写入等操作时检查文件是否是病毒携带者,如果是则根据用户的决定选择不同的处理方案,如清除病毒,禁止访问该文件,删除该文件或简单地忽略。这样就可以有效地避免病毒在本地机器上的感染传播,因为可执行文件装入器在装入一个文件执行时首先会要求打开该文件,而这个请求又一定会被实时监控在第一时间截获到,它确保了每次执行的都是干净的不带毒的文件从而不给病毒以任何执行和发作的机会。以上说的仅是病毒实时监控一个粗略的工作过程,病毒实时监控的设计主要存在以下几个难点:
        其一是驱动程序的编写不同于普通用户态程序的写作,其难度很大。写用户态程序时你需要的仅仅就是调用一些熟知的API函数来完成特定的目的,比如打开文件你只需调用CreateFile就可以了;但在驱动程序中你将无法使用熟悉的CreateFile。在NT/2000下你可以使用 ZwCreateFile 或NtCreateFile(native API),但这些函数通常会要求运行在某个IRQL(中断请求级)上,如果你对如中断请求级,延迟/异步过程调用,非分页/分页内存等概念不是特别清楚,那么你写的驱动将很容易导致蓝屏死机(BSOD),Ring0下的异常将往往导致系统崩溃,因为它对于系统总是被信任的,所以没有相应处理代码去捕获这个异常。在NT下对KeBugCheckEx的调用将导致蓝屏的出现,接着系统将进行转储并随后重启。另外驱动程序的调试不如用户态程序那样方便,用象VC ++那样的调试器是不行的,你必须使用系统级调试器,如softice,kd,trw等。
        其二是驱动程序与ring3下客户程序的通信问题。这个问题的提出是很自然的,试想当驱动程序截获到某个文件打开请求时,它必须通知位于ring3下的查毒模块检查被打开的文件,随后查毒模块还需将查毒的结果通过某种方式传给ring0下的监控程序,最后驱动程序根据返回的结果决定请求是否被允许。这里面显然存在一个双向的通信过程。写过驱动程序的人都知道一个可以用来向驱动程序发送设备I/O控制信息的API调用DeviceIoControl,它的接口在MSDN中可以找到,但它是单向的,即ring3下客户程序可以通过调用DeviceIoControl将某些信息传给ring0下的监控程序但反过来不行。既然无法找到一个现成的函数实现从ring0下的监控程序到ring3下客户程序的通信,则我们必须采用迂回的办法来间接做到这一点。为此我们必须引入异步过程调用(APC)和事件对象的概念,它们就是实现特权级间唤醒的关键所在。现在先简单介绍一下这两个概念,具体的用法请参看后面的每子章中的技术实现细节。异步过程调用是一种系统用来当条件合适时在某个特定线程的上下文中执行一个过程的机制。当向一个线程的APC队列排队一个APC时,系统将发出一个软件中断,当下一次线程被调度时,APC函数将得以运行。APC分成两种:系统创建的APC称为内核模式APC,由应用程序创建的APC称为用户模式APC。另外只有当线程处于可报警(alertable)状态时才能运行一个APC。比如调用一个异步模式的ReadFileEx时可以指定一个用户自定义的回调函数FileIOCompletionRoutine,当异步的I/O操作完成或被取消并且线程处于可报警状态时函数被调用,这就是APC的典型用法。Kernel32.dll中导出的QueueUserAPC函数可以向指定线程的队列中增加一个APC对象,因为我们写的是驱动程序,这并不是我们要的那个函数。很幸运的是在Vwin32.vxd中导出了一个同名函数QueueUserAPC,监控程序拦截到一个文件打开请求后,它马上调用这个服务排队一个ring3下客户程序中需要被唤醒的函数的APC,这个函数将在不久客户程序被调度时被调用。这种APC唤醒法适用于WIN9X,在 WINNT/2000下我们将使用全局共享的事件和信号量对象来解决互相唤醒问题。有关WINNT/2000下的对象组织结构我将在3.4.2节中详细说明。NT/2000版监控程序中我们将利用KeReleaseSemaphore来唤醒一个在ring3下客户程序中等待的线程。目前不少反病毒软件已将驱动使用的查毒模块移到ring0,即如其所宣传的“主动与操作系统无缝连接”,这样做省却了通信的消耗,但把查毒模块写成驱动形式也同时会带来一些麻烦,如不能调用大量熟知的API,不能与用户实时交互,所以我们还是选择剖析传统的反病毒软件的监控程序。
        其三是驱动程序所占用资源问题。如果由于监控程序频繁地拦截文件操作而使系统性能下降过多,则这样的程序是没有其存在的价值的。本论文将对一个成功的反病毒软件的监控程序做彻底的剖析,其中就包含有分析其用以提高自身性能的技巧的部分,如设置历史记录,内置文件类型过滤,设置等待超时等。
      这段文字也是从关于病毒工作原理那篇文章里搞出来的,由于那是一片老文章,因此其中的很多观点可能在现在已经不再适用,很多加密方式已经变得很强。本人并不非常赞同文章关于实时监控技术的解释。MM告诉我,现在的基于NT内核的操作系统应用程序文件-应用程序-操作系统之间的响应关系与原9x时代还是有一定区别的,特别是加入了很多线程级的权限控制,杀毒软件现在可以采用实时内存监控的方法来影射应用程序的活动。为什么欧美的软件厂商没有搞出那么多的监控方式像什么“网页监控,聊天软件监控等”,原因很简单,因为病毒能够起作用,就必须在内存中运行,因此良好的文件监控和内存监控足以解决病毒,国内搞出那么多名堂更多的是出于市场商业考虑。
      毋庸置疑,现在的杀毒软件引擎都是虚拟机技术和实时监控技术的复合体。由于各家研发人员所研究的方向不同,各产品的杀毒品质也非常迥异。比如诺顿的杀毒理念就是在确保系统正常运行的前提下,控制最终消除可能影响系统稳定的因素;而另有些厂商则认为杀毒软件应该最快的消除有害程序。业界一种获得公认的设计底线是杀毒软件绝对不能因为杀毒导致系统崩溃,可惜的是现在很多厂商屡屡撞线。
    以下为各家厂商的杀毒引擎简介,文中有一部分来源于业已公开的技术资料,有一部分来源于在病毒论坛上被奉为经典的反编,还有一部分来源于厂商技术人员的介绍(官方和私下的都有)。
        1.诺顿:这个最熟悉了,诺顿的杀毒软件实际上防止侦测方面做得并不是很好,很多病毒程序在子程序段中经常借鉴搞崩诺顿的代码,希望在新版本中诺顿可以采用更强的自身防护技术。诺顿的引擎应该是完全自成封闭体系的,没有资料证实诺顿曾经购买或者借鉴过别的杀毒引擎。传闻很多公司都在设计时参考过卡巴斯基的泄漏版引擎设计,因此曾经在微软社区在线聊天时,问过这个问题。回贴一致认为诺顿借鉴卡巴斯基的杀毒引擎毫无必要,它自己的引擎搞得挺好的。有一个叫fenssa的家伙甚至回贴说不考虑病毒库因素,诺顿的杀毒引擎相当先进,综合防护性能很好。在微软,除了用mcafee的就使用诺顿的(这一点我比较相信,很少见到别的杀软在微软被使用)。从诺顿的技术文档描述和在病毒论坛上流传的29A的一个家伙搞的一篇叫虚拟机环境下诺顿工作过程的步进追踪和反编的文章来看,诺顿的杀毒引擎应该是传统的静态代码对应与实时监控的完美结合,应该有一些改进的虚拟机技术在里面(诺顿的人并不怎么推崇虚拟机技术)。诺顿的杀毒速度慢,应该源于诺顿采用了较多的静态代码这种传统的检查方式有关。我个人非常喜欢诺顿的隔离机制,我认为在没有确定完全正确的处理方式之前,删除是不应该被采用的。一个高手写的病毒应该能尽可能的与系统进程相关,在这种情况下,隔离的优势立刻显现。诺顿资源占用量比较大,但实现了如下设计目标:能识别的病毒和被识别为病毒的进程完全可以正确处理,对已经不可能产生破坏作用的’病毒尸体‘不会产生误判,更不会出现出现一次又一次的在处理完某病毒后又检测其为病毒的状况。
      很多人认为诺顿企业版和个人板采用的引擎完全一致这种理解不很正确。实际上企业版在个人板的技术上还是有改进的。zdnet上刊登过一篇文章指出:企业版和个人版引擎的核心规则完全一样,但在前端文件汇入部分企业版是优于个人版的,企业版使用了更多的API接口。文章中说,在大规模文件扫描时,企业版明显优于个人版。并且由于使用了负载技术,企业版资源占用还好一点。另外据说企业版支持基于网络的多重负载技术。

    2.Mcafee:记得看过一篇报道说mcafee收购过别的杀毒软件引擎设计公司,据回贴可知为所罗门。在网上很少能看到关于对mcafee的杀毒引擎进行过分析的技术文档,但从他自己宣传的资料看,mcafee对虚拟机技术和实时监控研究的都挺彻底的。比如他最近宣传防止应用程序溢出(大致这个名字)的技术,应该是在不考虑硬件平台的情况下虚拟机技术和实时监控技术结合的上乘之作,尽管经常出现错误的溢出侦测(软件层面的放溢出技术确实不很稳定)。在处理大量的文件时,mcafee有一定的速度优势(微软社区中有这个问题的论述)。有来自于mcafee论坛的消息说,mcafee 正在研究更先进的智能码扫描技术,估计肯定比东方卫士搞得要好。根据组长的回贴,McAfee自发布VSE8.0i以来就着重于“前慑防范”这一新型的安全领域,并且NORTON也在超这一方向迈进。“前慑防范”一共分为两个部分,其一为运用部分防火墙技术外加其入侵检测技术有效的阻断病毒的传播源,以至于病毒在传染的初期无法得到大面积的传播降低了危害性;其二为依靠其强大的特征码检测技术(Extra.dat)对病毒的行为方式、特征代码等进行检测,依靠它强大的研发团队以及策略联盟伙伴使其在这一领域独树一帜。诺顿能在其新版产品中也加入了一些原本属于防火墙的功能。发邮件询问诺顿的研究人员为什么没有采用特征码杀毒技术,回应说一个完美的特征码扫描技术应该能够达到根据用户的指定加入特定文件为病毒的目的,也就是当用户指定某个活动程序为病毒时,杀毒软件的引擎能够根据自身的规则为该活动程序定义一个特征码,并且在控制该活动程序时,能够有效地断绝其与系统正常进程的关联。在没有这个水平之前,诺顿不会大规模采用特征码技术。从mcafee的技术文档来看,mcafee也只是有限度的试验性的研究该技术,并在比较有把握的地方应用。实际上两家公司在这方面还有很长的路要走。

    3.卡巴斯基:本论坛上被过度神话的杀毒软件。我个人非常尊重卡巴斯基的高水准,但说句实话,在不考虑资源占用的情况下,卡巴斯基并没有什么足够的理由能够让我放弃诺顿,二者的水平并没有什么差异。在稳定性上,卡巴斯基比诺顿要差一些。由于早些年卡巴斯基的引擎曾经泄漏(实际上泄漏的并不是初始源代码,只是泄漏的引擎可以比较容易的反编),因此网上可以找到很多关于卡巴斯基引擎的非常详细的技术分析,尤其是德国的病毒高手写的关于如何优化卡巴斯基杀毒引擎的文章,被认为是所有采用卡巴斯基引擎的杀毒软件厂商必看的文章之一,就象美国人写的那篇VB100到底怎么测试杀毒软件(里面作者综合近几年的测试结果推测了VB100在测试时可能使用的病毒类型,相关比例等)是杀毒软件厂商在将自己的软件送测前必看的文章一样。从网上大量的分析文档看卡巴斯基的虚拟机技术是很优秀的,但是去年有人发贴认为卡巴斯基的良好的性能来源于它非常庞大的病毒库和良好的升级速度,其杀毒引擎设计水平并不高于其余的公司。卡巴斯基的引擎采用了所谓的单一形式的规则判断,众所周知诺顿是基于分类的规则处理。卡巴斯基的引擎在文件标识比对病毒库的时候被认为有着很好的性能,充分利用了处理器的处理能力,“但令人担忧的是,该公司对最新出现的技术并不充分重视”(英国的计算机杂志去年年末的评论),究竟是对原有引擎进行彻底改进还是大量使用新技术,估计谁都不知道。卡巴斯基的引擎存在叫做所谓的“过与简短的文件码”问题,说白了就是有时候会鞭尸,它的研究人员说正在改进。前段时间有人发帖子中指出病毒编写者只认可卡巴斯基,说实话看了很多论坛文档,好像没有哪个强人这么说过。卡巴斯基走的是与美国厂商有很大区别的研发道路,卡巴斯基很少引用别的公司开发的技术,而是在不断的深化,改进自身的杀毒引擎,单从某些方面评论,卡巴斯基的引擎代表着业界最高水准,但并不是全部。卡巴斯基是一款很好的杀毒软件,但并不是神。应该说它与诺顿,mcafee一样都站在杀毒软件的顶峰水平上。
      在国内,一直有江民的杀毒软件采用卡巴斯基引擎的传闻,说句实话业界相当一部分杀毒软件都参考了其引擎设计,即使在国内也没有足够的信息证实只是江民参考了其引擎设计。很多人都使用各种各样的病毒包对卡巴斯基和江民进行测试,测试结果是完全一样。说句实话,这种测试并没有什么可信性,对化石孢的检测各种杀毒软件结果几乎都一样。只有两种方法能够说两者的引擎如何:1.将两款软件送至VB100或者类似的权威机构进行测试,如果两者对其中未知病毒的测试结果(这个结果并不公布,厂商自己去买)完全一样,那什么都没说的。两个不同的引擎机制在对待同样大规模的未知病毒库时出现相同的检测结果近乎是不可能的。可惜的是,江民没有参加过VB100测试,好像也不大可能个人有足够庞大的未知病毒库来进行检测。2.采用类似于破解的方法进行反编,分析整个软件的工作机制,工作量有多大相信都能猜出来,也没有见过有人搞过这种研究。因此我个人只能认为江民可能(较大程度的)参考了卡巴斯基的杀毒引擎设计,但从两款杀毒软件的灵敏程度,杀毒速度等诸多方民看,即使江民采用了卡巴斯基的引擎,江民也应该进行了很大程度的源代码修改或者优化,另外也有消息说江民在引擎中加入了一些自己开发的技术,在实现方法上类似于数字码技术。霏凡上曾有高手指出假如公布两款软件的源代码,可能并不会有人能看出二者有什么关系。实际上,当发现江民的软件并不能使用卡巴斯基的病毒库的时候,我们就应该知道即便曾经借鉴过,二者也已经可以被认为是不同的杀毒引擎。可能在win3.x平台下,二者曾经很相近;但是今天我们在使用winxp.即使江民确实采用过卡巴斯基的引擎,那么可以说江民在某些方面发展了这套引擎,尽管这种发展未必与原始的研发方向相符。但无论基于何种角度考虑,我认为江民的杀毒软件还是有优秀之处的。毕竟你回头看一看国内的杀毒软件厂商,在真正的技术研发领域只有这么一面旗帜偶尔飘扬。一步步走下来,江民还是有技术进步的。只就纯技术因素而论,假如江民采用了卡巴斯基的引擎,那么今天两家厂商在不同的方向上发展着那套原始的引擎,这未必是坏事,只要不固步自封,我们好像没什么必要争论两家厂商是否一个原始祖先,怕的就是在别人都往前跑的时候自己停下来,这跟自取灭亡没什么区别。尽管市场是杀毒软件厂商的第一要素,但别忘了技术是一个杀毒软件能否基业常青的决定性力量。[/color]
     

    loading...
  • [color=Yellow]我在和3721斗争了N年才得出的结论,可以说我是看着它长大的,太厉害了
    学会上网之后,原本以为到达了一个更加便利的世界,然而,这个自由便利的世界却早被3721统治。 
         
    5年时间,疯狂掠夺统治资本 
         
    3721从1998年成立至今一直在利用微软的浏览器做着自己的梦,试图打造中国人的网络标准。用了5年时间,3721通过各种渠道、利用各种手段,让他的网络实名插件遍布90%的中文上网用户,而这,就是3721用5年时间积累起的统治中国互联网的雄厚资本,3721插件,表面上是中文上网工具,实际上,背后利用简单的病毒原理控制着网民的电脑,玩弄着中国互联网和对技术不甚了解的7000万网民,5年时间,积累起了足以对抗7000万网民和的雄厚资本。 
        
    用简单的技术愚弄着中国网民 
        
    这样一个打着“简单上网”旗号的3721,在程序员眼里,甚至成为了“垃圾”的代名词。 
        
    到任何程序员聚集的站点,查看一下涉及到3721新闻的评论 90%以上都是对3721的攻击,甚至是辱骂,更有程序员还在个人网站中标注:“如果你是3721的支持者,不要安装本程序,本人不欢迎并拒绝其支持者使用本程序!”    
        
    首先,程序员对3721的技术一直没有持肯定态度。在程序员看来,通过客户端软件将域名和中文单词对应起来,实在没有什么技术可言。 
        
    最初,3721的软件是客户端的形式,主要通过和网站合作进行免费发放,但这种方式容易被用户拒绝或者删除。不久,3721采用了微软公开的activex技术标准,将客户端转变为了浏览器插件。应该说,许多软件均采用activex技术开发,例如flash动画播放插件、microsoft media player插件等,这种方式也无可厚非,但3721在推行这种方式时,并没有尊重用户的意愿,而是防不胜防的在各种网站上弹出骚扰对话框,强迫安装。有程序员表示:“不管软件写的怎样,有一点是肯定的,开发者和策略制订者缺乏起码的职业道德。现在所谓2000万用户,有多少是自愿安装的呢?又有多少是踩中地雷的呢。”同时,在早期的某些版本中,的确有造成用户死机的案例出现并被广泛的传播。 
        
    因此,3721接下来就好像故意要同程序员做一些对抗的工作。为了防止卸载删除,软件中采用各种技术手段。有程序员说:“现在3721的插件越做越霸道。不止是修改注册表,而是一直在你的系统里运行,并把自己伪装起来,我曾经把cmin*.dll删除后,用winhex查还有,是改名运行的!而且如果用softice 调程序,3721的dll总会捣乱!” 3721在煞费苦心的加入各种技巧,有的技巧与木马病毒的原理一模一样,所有3721的软件在你的计算机上都开着后门,而这个后门,正是3721走进你计算机深处的通途,3721在偷窥你的时候,你,却并不知情。 
        
    用程序员群体的眼光看,用砑�开发的某些技巧来说什么用户的意志,这�?721是自辱,对中国互联网是侮辱! 
        
    但是,3721为了保证其利润来源和一个无耻的梦想,他还是选择侮辱中国互联网,侮辱中国网民。   
        
    黑社会手段抢夺地盘 
        
    然而3721在圆自己的美梦时却毁掉了众多网民的基本的使用权。众多不知情的网民在无意下载3721插件后却一直在被3721的梦想所左右。3721的插件也已经开始在90%的中文上网用户打开电脑开始上网时被监控。 
        
    有懂技术的网民在论坛上发表言论时写道:这两天上某些网站不是很顺利,开始我以为是网络的问题,可是其它网站上的去很正常,因此我排除了网络原因。排除了病毒原因之后,我反编译了其电脑里唯一和浏览器相关的程序――3721网络实名插件。当看到3721程序代码的时候,他说:“当时吓出了一身冷汗。原来这个程序有个后门,所有的人都不知道存在的这个后门。而3721的其他程序就通过这个后门进进出出。在这个程序中我发现了一段代码,这就是屏蔽那些网站的代码,在这个代码后面,有着一长串我们熟悉的网站,有的屏蔽是生效的,有的屏蔽还没有启用。这段代码就像一个机器人一样,在这段代码后边,如果加上::URL::http://www.sina.com.cn   那么新浪网将被屏蔽而无法访问。 

    3721为了保住他的网络实名业务,不得不保住他插件的推广量,而3721用这种手段,在威胁并强迫着许多网站为他弹插件。而许多网站却敢怒不敢言。***网站是受害者之一,而除他之外,还后一长串名单。 
        
    3271就像中国互联网的黑社会,他知道你电脑里的所有信息,他占据着本属于网民的中国互联网,把他划为属于自己的地盘,牢牢控制,即便是sina、sohu、netease、qq这样的门户大腕,慑于3721的淫威,在3721面前也是敢怒不敢言,因为就连都无可奈何。 
        
    谁来管管3721? 
        
    遍查互联网的法律,也没有任何一条对3721这种做法进行管理的规定,甚至没有任何一级管理部门和法律制定者意识到这个问题。3721在利用着自己制定的法律为所欲为,制定着属于他的游戏规则,所有人都必须俯首称臣,上贡交钱。 
        
    一方面偷偷摸摸给网民安装,一方面穷凶极恶逼迫其他网站为他弹插件,否则就“封掉”不合作的网站,毕竟,他已经有了90%的占有率,一方面,堂堂正正的大卖网络实名赚钱,甚至威胁北京大学,如果不买这个词,就把这个词卖给别人。 
        
    用三条计谋堂而皇之的赚钱,大大方方的管理中国互联网。原本互联网所倡导的平等、自由、公开的原则,在3721的公司利益面前荡然无存。原本上上下下部署严密的部门对他也无可奈何,甚至毫不知情。 
        
    中国互联网,被3721继续统治着……,谁来管管?无人来管,无人敢管. 

    3721公司已经一次次的挑战网民的忍耐力和承受能力。不断在技术上进行改进,以达到使网民无法屏蔽该公司网络实名客户端的目的。面对网民愤怒的谴责和自发的屏蔽行动,3721公司显然是准备不惜一切代价与这些在其眼里是”刁民“的网友战斗到底。 

      近日,我们再次发现,3721公司进一步改进了他们的”反“屏蔽技术。通过该方法,网络实名的客户端将”永久“的驻留在用户的计算机系统中,即使用户选择了卸载该客户端。除非,用户重新安装其计算机系统,否则,无法手动清除该程序。 

      在用户浏览网页时,弹出的安装窗口,既没有使用协议,也没有明示程序的发布公司,存在严重的欺诈行为。同时,该程序并不会在用户的计算机中建立”合法“的程序安装目录,而且用户通过一般手段,无法在自己的计算机系统中找到被安装的程序,这无疑严重危害了用户的计算机安全。 

      对于,3721这样的行为,一些法律也专家认为,3721公司已经严重违反了中华人民共和国国务院于 1997 年颁布实施的《计算机信息网络国际联网安全保护管理办法》中的相关条款,以及《中华人民共和国消费者保护法》的相关内容。 

      在此,我们仅代表那些深受3721网络实名”病毒“之苦的用户,谴责3721公司这种毫无商业道德的行为。并且,希望国家有关部门,认真对待该事件,规范市场秩序,创造良好的市场环境。 

     有网友认为觉得3721客户端软件已经具有部分病毒的性质了。 

      1 在设备驱动层加了保护,而且是boot时立即启动,即使在安全模式时也会启动。这个设备的名字叫做 cnsminkp,驱动程序位于 x:\Windows\system32\drivers\cnsminkp.sys。 

      2 cnsminkp.sys 一旦加载,无法用命令方式卸载这个驱动程序,即 net stop cnsminkp 是无法停止这个驱动的。 cnsminkp.sys 的文件日期是2004-02-15, 是前几天才release出来的。 

      3 这个驱动不停地检测cnsminkp.sys 是否存在,cnsmin.dll是否存在,如果不存在,立即会重建这两个文件,并且不停检测service 和software 下面的注册表,确保cnsminkp这个服务的参数保持和它设置的一致,如果被改动,立即会恢复成原来的样子。另外,还确保 run 里有cnsmin.dll。 

      4 这种死皮赖脸的方式,是决心要在内存和硬盘上驻留cnsminkp.sys 和cnsmin.dll,使系统性能迅速下降。 

      cnsminkp.sys 是否表示 cnsmin keep 还是cnsmin kill protect ? 只要你的x:\Windows\system32\drivers下有cnsminkp.sys ,肯定中招了  

     转贴:接到内网用户来报,在上到某些站点的时候,会被提示安装一个叫3721中文实名的插件,部分用户在不知情的情况下误点“安装”选项,导致该病毒驻留于硬盘上难以杀除。天缘虽是网络管理员,但是对Windows操作系统的确使用得不多,从来也没有用过这个名为3721的插件,但看到用户们焦急地神情,于是答应尽力而为。经过几番努力,终于将其斩于马下。 以下是杀除该病毒得经历及病毒解决方案。


    病毒发作现象:

    自动将浏览器的“搜索”功能重定向到一个叫www。3721。com的网站,该站点为中文站,且无法修改;

    强行在用户ie上添加“情景聊天”、“上网加速”等几个图标;

    不断刷新注册表相关键值,以达到成功驻留和大量消耗用户主机资源的目的;

    每次启机加载,并自带进程保护功能,在正常地windows启动下难以杀除;

    带自动升级功能,每次用户上网使用ie时,该病毒会后台执行升级;

    病毒自身特点:

    自带卸载功能;该病毒为达到隐藏自身目的,麻痹下载插件用户的目的,提供了卸载程序。但根据天缘的使用情况发现,在卸载后,该病毒程序依然驻留,启动时仍然加载,依然监视、改写注册表;

    采用网络升级方式;该病毒为了防止用户以及杀毒软件的杀除,采取定期网上升级的方式,这点与近期的其他Windows主流病毒类似,但值得一提的是该病毒建有公开的病毒升级站点www。3721。com,且站点风格酷似门户、服务类站点,具有极大的欺骗性;

    以驱动模式加载;该特性可说是近段时期以来病毒编写的一次技术飞跃,采用驱动模式加载配合挂接hook的方式,在windows下极难查杀(详细技术讨论见后);

    提供在浏览器地址栏中输入中文后转到其站点进行关键字查询的搜索服务。前段时间的冲击波克星病毒也曾在感染用户机器后自动连接用户的机器到update.Microsoft.com下载补丁,看来新的病毒越来越多地喜欢提供一些另类功能了;

    被动方式传播:利用一些站点来进行传播,而不是主动感染其他机器,这点与当前热门的“***”病毒的方式相近。从主动转向被动,可说是今年一些病毒的新特点。

    当用户访问站点的时候,弹出一个控件下载窗口提示用户下载安装,表面上称自己是提供中文实名服务,引诱用户安装;

    在安装过程中多处修改用户文件及注册表;

    添加文件:

    在Documents and SettingsAll Users「开始」菜单程序网络实名 目录下添加:

    了解网络实名详细信息。url 86 字节

    清理上网记录。url 100 字节

    上网助手。url 99 字节

    卸载网络实名。lnk 1,373 字节

    修复浏览器。url 103 字节

    在WINDOWSDownloaded Program Files 下添加:

    assis.ico 5,734 字节

    cns02.dat 1,652 字节

    CnsHook.dll 56,320 字节

    CnsMin.cab 116,520 字节

    CnsMin.dll 179,712 字节

    CnsMin.inf 378 字节

    sms.ico" 6,526 字节

    yahoomsg.ico 5,734 字节

    在WINDOWSSystem32Drivers 目录下添加:

    CnsminKP.sys

    添加注册表键值:

    增加HKEY_LOCAL_MACHINESOFTWARE3721 主键,下设多子键及属性值;

    在HKEY_LOCAL_MACHINESOFTWAREClassesCLSID 主键下增加

    两个子键

    在HKEY_LOCAL_MACHINESOFTWAREClasses主键下增加

    CnsHelper.CH

    CnsHelper.CH.1

    CnsMinHK.CnsHook

    CnsMinHK.CnsHook.1四个子键

    在HKEY_LOCAL_MACHINESOFTWAREClassesInterface主键下增加子键

    在HKEY_LOCAL_MACHINESOFTWAREClassesTypeLib主键下增加

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerAdvancedOptions主键下增加!CNS子键

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions 主键下增加

    五个子键

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerSearch主键下增加

    CustomizeSearch

    OcustomizeSearch

    SearchAssistant

    OsearchAssistant 四个子键

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsCurrentVersionExplorerShellExecuteHooks主键下增加子键

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsCurrentVersionRun下增加CnsMin子键

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsCurrentVersionRunOnce下增加EK_Entry 子键 (提示,这个键将在下次启动机器的时候生效,产生最令人头疼的部分,后文会叙述)

    在HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsCurrentVersionUninstall下增加CnsMin 子键

    在HKEY_CURRENT_USERSoftware下增加3721子键

    在HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain下增加

    CNSAutoUpdate

    CNSEnable

    CNSHint

    CNSList

    CNSMenu

    CNSReset

    在重新启动计算机后,上面提到的RunOnce下的EK_Entry生效,在注册表中多处生成最为邪恶的CnsMinKP键值,同时在系统盘的windows/system32/drivers目录下生成CnsMinKP.sys文件,噩梦由此开始。

    由于win2k/xp在启动的时候(包括安全模式)默认会自动运行windows/system32/drivers下面的所有驱动程序,于是CnsMinKP.sys被加载,而这个驱动的作用之一,就是保证windows/ Downloaded Program Files目录下的Cnshook.dll和CnsMin.dll以及其自身不被删除;Cnshook.dll的作用则是提供中文实名功能,CnsMin.dll作用在于使其驻留在ie进程内的时候。CnsMin为了保证自己的优先级最高,用了一个定时器函数反复安装钩子,因此造成系统性能下降,在天缘测试的那台机器上,使得性能大概下降了20%左右。而且由于hook强行挂接的原因,当用户使用断点调试程序的时候将会导致频繁出错,这一点与早期版本的cih导致winzip操作和无法关机类似(关于详细的技术细节,可参看题目为《[转载]3721驻留机制简单研究》一文,原作者Quaful@水木清华)

    防删除特性:

    该病毒虽然自带一个所谓的“卸载程序”,但事实上核心部分的程序/注册表键值依然没有删除。而且该病毒更是利用各种技术手段,具有极其强大的反删除特性。

    windows系统启机(包括安全模式下)便会加载windows/system32/drivers下的CnsMinKP.sys,该驱动该驱动程序过滤了对其自身及相关重要文件和注册表的删除操作。每当试图删除3721的关键文件和注册表项时,直接返回一个TRUE,使Windows认为删除已经成功,但文件和注册表实际上还是在那里。

    技术亮点:

    天缘不得不承认,3721这个病毒插件可称我作为网管以来面对的最难清除的病毒。近几年来病毒有几次质的突破:cih感染可升级的bios、红色代码打开windows的共享扩大战果、meliza让我们见识了什么是看得到源程序的病毒、mssqlserver蠕虫让我们留意到计算机病毒能攻击的不光是节点还有网络设备、冲击波病毒让我们认识到大量使用同一种操作系统时在出现安全漏洞时的可怕、***病毒让我们知道了将欺骗艺术与软件漏洞结合的威力、而这次3721病毒首次展现了病毒强大的反删除特性,可说是在windows环境下无法杀除的病毒。虽然这是个良性病毒,对系统并没有破坏特性,但依据病毒的发展史,可以预见,这种几近完美的反删除技术将很快被其他病毒所利用,很快将被其他病毒所利用。届时结合网络传播,局网感染带强大反删除功能的病毒或许会让目前windows平台下的杀毒软件遭遇到最大的考验。而这次经历,也让我意识到微软的windows操作系统在人性化、美观化、傻瓜化的背后的危机。作为it同行,我个人对3721病毒作者所使用的种种技术表示钦佩,但新型病毒的潘多拉魔盒,已经被他们打开。

    在目前已知的病毒历史上,之前只有几种病毒利用过windows nt下的system32/drivers 下的程序会被自动加载的特性来进行传播,但那些病毒本身编写地不够完善,会导致windows nt系统频繁蓝屏死机,象3721插件病毒这样完美地加载、驻留其他进程,只消耗主机资源,监测注册表及关键文件不导致系统出错的病毒,国内外尚属首次,在技术上比以前那些病毒更为成熟;

    如同天缘和大家曾经探讨过的没打sp2以上patch的win2k如何上网下载sp4再安装补丁这样的连环套问题一样。由于drivers目录下的CnsMinKP.sys启机必定加载,而欲不加载它,只有在windows启动后,进注册表改写相应的CnsMinKP键值或者删除该文件,但由于CnsMinKP.sys过滤了对其自身及相关重要文件和注册表的删除操作。每当试图删除3721的关键文件和注册表项时,直接返回一个TRUE,使Windows认为删除已经成功,但文件和注册表实际上还是在那里。使得注册表无法修改/文件无法被删除,让我们传统的杀除病毒和木马的对策无法进行。

    驻留ie进程,并自动升级,保证了该病毒有极强大的生命力,想来新的杀除方法一出现,该病毒就会立即升级。Windows上虽然还有mozilla等其他浏览器,但由于微软的捆绑策略和兼容性上的考虑,绝大多数用户一般只安装有ie.上网查资料用ie,寻找杀除3721资料的时候也用ie,如此一来,3721抢在用户前面将自身升级到最新版本以防止被杀除的可能性大大增加,更加增添了杀除该病毒的难度。或许在本文发出后,病毒将会在最短时间内进行一次升级。

    附带其他“实用”功能。天缘记得早年在dos下的时候曾遇到一些病毒,在发作的时候会自动运行一个可爱的屏幕保护,或者是自动替用户清理临时文件夹等有趣的功能;后来在windows平台上也曾见过在病毒发作时自动提醒“今天是xx节,xx年前的今天发生了xx历史典故”这样的带知识教育意义的病毒;而3721病毒则是提供了一个所谓的中文域名与英文域名的翻译功能。随着病毒的发展,这样带隐蔽性、趣味性和欺骗性的病毒将越来越多。例如最近的邮件病毒以微软的名义发信,或以re开始的回信格式发信,病毒编写的发展从原来的感染传播、漏洞传播、后门传播逐步向欺骗传播过渡,越来越多的病毒编写者意识到社会工程学的重要性。或许在不久的将来,就会出现以简单的网络游戏/p2p软件为掩饰的病毒/木马。

    极具欺骗性:该插件在win98下也能使用,但使用其自带的卸载程序则可比较完美地卸载,而在win2k/xp平台下卸载程序则几乎没用。由此可以看出病毒编写者对社会工程学极其精通:当一个人有一只表时他知道时间;而当他有两只表时则无从判断时间。当在论坛/bbs上win2k/xp的用户提到此病毒无法删除的时候,其他win2k/xp用户会表示赞同,而win98用户则会表示其不存在任何问题属于正常程序的反对意见。两方意见的对立,影响了旁观者的判断。 
    商业行为的参与。据传该病毒是由某公司编写的,为的是进一步推销其产品,增加其访问量和申请用户。这点上与某些色情站点要求用户下载xx插件,之后不断利用该插件弹出窗口进行宣传的方式很象。天缘不由得想起一个典故。话说当年某公司公司工作人员(当然也有可能是不法者冒充该公司的工作人员)经常打电话恐吓大型的企业单位,无外乎说其中文域名已被xx公司抢注,如不交钱将会导致xx后果云云。兄弟学校中似乎也有受到此公司骚扰的经历:该公司员工打电话到某高校网络中心,起初是建议其申请中文域名,其主任很感兴趣但因价格原因未果。第二次打来的时候,就由劝说变成了恐吓,说该校中文名字已经被xx私人学校注册,如果该校不交钱申请就会有种种可怕后果云云。谁想该校网络中心主任吃软不吃硬,回话:“你既然打电话到此,想来你也知道在中国,xx大学就我们一所是国家承认的,而你们公司在没有任何官方证明的情况下就替申请我校中文域名的私人学校开通,就这点上就可见你们的不规范性,那么如果我私人交钱申请xxx国家领导的名字做个人站点是不是贵公司也受理?遇到类似冒用我校名义行骗及协助其行骗的公司,我们一贯的做法是寻找法律途径解决!”回答甚妙,当然此事后果是不了了之。从相关报道中不难看到,计算机犯罪逐步开始面向经济领域。侵犯私人隐私,破坏私人电脑的病毒与商业结合,是病毒编写由个人行为到商业行为的一次转变,病毒发展的历史由此翻开了新的一章。

    由于网管专题的栏目作用主要是“授人与渔”,天缘把病毒查杀过程经历一并写下,大家共同探讨。

    第一回合:

    当初见此病毒的时候,感觉不过如此,普通木马而已。依照老规矩,先把注册表里相关键值删除,再把病毒文件一删,然后重新启动机器,等待万事ok.启机一看,注册表完全没改过来,该删除的文件也都在。

    结局:病毒胜,天缘败。

    第二回合:

    换了一台机器,下了个卸载帮助工具,以方便监视注册表/文件的改变。我下的是Ashampoo UnInstaller Suite这个软件,能监视注册表/文件/重要配置文件。Ok,再次安装3721插件,把对注册表的改变/文件的改变都记录下来。(值得注意,因为注册表run和runonce的键是下次启动的时候生效的,因此在重新启动后,还要对比一下文件/注册表的改变才能得到确切结果)。然后对比记录,把3721添加的键全部记下来,添加的文件也记录下来。之后我计划是用安全模式启动,删除文件和注册表,所以写了一个save.reg文件来删除注册表里的相关键值(写reg文件在网管笔记之小兵逞英雄那讲有介绍,等一下在文末我提供那个reg文件给大家参考),写了一个save.bat来删除相关文件,放到c盘根目录下。重新启动机器,进入安全模式下,我先用regedit /s save.reg 导入注册表,然后用save.bat删除相关文件。重新启动机器,却发现文件依然存在,注册表也没有修改成功。通常对付木马/病毒的方式全然无效,令我产生如临大敌之感。

    结局:病毒胜,天缘败。

    第三回合:

    重新启动机器,这次我采用手工的方式删除文件。发现了问题――对system32/drivers目录下的CnsMinKP.sys,WINDOWSDownloaded Program Files 目录下的Cnshook.dll和CnsMin.dll都“无法删除”。这样说可能有点不妥当,准确地说法是――删除之后没有任何错误报告,但文件依然存在。于是上网用google找找线索――在绿盟科技找到了一则文章(名字及url见前文),于是明白了这一切都是CnsMinKP.sys这东西搞得鬼。那么,只要能开机不加载它不就行了??但试了一下2k和xp的安全方式下都是要加载system32/drivers下的驱动,而如果想要取消加载,则需要修改注册表,但由于在加载了CnsMinKP.sys后修改注册表相关值无效,导致无法遏制CnsMinKP.sys这个程序的加载。当然,有软驱的朋友可以利用软盘启动的方式来删除该文件,但如果跟天缘一样用的是软驱坏掉的机器怎么办呢?记得绿盟上的文章所说的是――“目前无法破解”。在这一步上,天缘也尝试了各种方法。

    我尝试着改这几个文件的文件名,结果没成功;

    我尝试着用重定向来取代该文件,如dir * > CnsMinKP.sys ,结果不成功;

    我尝试着用copy con <文件名> 的方式来覆盖这几个文件,结果发现三个文件中Cnshook.dll可以用这样的方法覆盖成功,但是在覆盖CnsMinKP.sys和CnsMin.dll的时候,居然提示“文件未找到”!?熟悉copy con用法的朋友都该了解,无论是文件是否存在,都应该是可以创建/提示覆盖的,但居然出来这么一个提示,看来CnsMinKP.sys着实把系统都骗过了,强!!跟它拼到这里的时候,回想到了在dos下用debug直接写磁盘的时代了,或许用它才能搞定吧?

    仔细一想,win2k/xp下似乎没有了debug程序了,而或许问题解决起来也不是那么复杂。再又尝试了几种方法后,终于得到了启示:既然文件不允许操作,那么##作目录如何?

    我先把windowssystem32drivers目录复制一份,取名为drivers1,并将其中的CnsMinKP.sys删除(注意,因为是drivers1中的,所以可以被成功地真正删除掉);

    重新启动机器,到安全模式下;

    用drivers1目录替代原来的drviers目录

    cd windowssystem

    ren drivers drivers2

    ren drivers1 drivers

    之后重新启动机器,然后进到windows后先把drivers2目录删除了,然后慢慢收拾残余文件和清理注册表吧。在这里天缘提供一个reg文件,方便各位删除注册表:

    Windows Registry Editor Version 5.00(用98的把这行改成regeidt4)

    [-HKEY_LOCAL_MACHINESOFTWARE3721]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesCLSID\]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesCLSID\]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesCnsHelper.CH]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesCnsHelper.CH.1]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesCnsMinHK.CnsHook]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesCnsMinHK.CnsHook.1]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesInterface\]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesTypeLib\]

    [-HKEY_LOCAL_MACHINESOFTWAREClassesTypeLib\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerAdvancedOptions!CNS]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionUninstallCnsMin]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions\]

    [-HKEY_CURRENT_USERSoftware3721]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerSearchOCustomizeSearch]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerSearchOSearchAssistant]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerSearchCustomizeSearch]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerSearchSearchAssistant]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionExplorerShellExecuteHooks\]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRunCnsMin]

    [-HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRunOnceEK_Entry]

    [-HKEY_USERSS-1-5-21-789336058-764733703-1343024091-1003SoftwareMicrosoftInternet ExplorerMainCNSAutoUpdate]

    [-HKEY_USERSS-1-5-21-789336058-764733703-1343024091-1003SoftwareMicrosoftInternet ExplorerMainCNSEnable]

    [-HKEY_USERSS-1-5-21-789336058-764733703-1343024091-1003SoftwareMicrosoftInternet ExplorerMainCNSHint]

    [-HKEY_USERSS-1-5-21-789336058-764733703-1343024091-1003SoftwareMicrosoftInternet ExplorerMainCNSList]

    [-HKEY_USERSS-1-5-21-789336058-764733703-1343024091-1003SoftwareMicrosoftInternet ExplorerMainCNSMenu]

    [-HKEY_USERSS-1-5-21-789336058-764733703-1343024091-1003SoftwareMicrosoftInternet ExplorerMainCNSReset]

    结局:病毒败,天缘胜。

    (虽然是成功地删除了它,但是感觉赢得好险,如果该病毒加一个禁止上级文件改名的功能那么就真的没折了,为了预防类似的情形,最后还是找到了彻底一点的办法,见下)

    第四回合:

    聪明的读者大概已经想到,既然没有办法在硬盘启动对于c盘是fat32格式的机器,想到这里已经找到了解决办法――用win98启机软盘启动机器,然后到c盘下删除相关文件,然后启动到安全模式下用save.reg把注册表搞定就行了。问题是――大多数win2k/xp都使用的是新的ntfs格式,win98启机软盘是不支持的!怎么办?有软驱的机器可以做支持NTFS分区操作的软盘,用ntfsdos这个软件就能做到。而跟天缘一样没有软驱的朋友,别忘记了win2k/xp开始加入的boot,不光是能够选择操作系统而已,而是跟linux下的lilo和grub一样,是一个操作系统引导管理器――换句话说,如果我们能在硬盘上做一个能读写NTFS的操作系统,再用boot进行引导,那么不是就可以在无软驱的情形下实现操作c盘的目的了么?在网络上找到vFloppy.exe 这个软件,它自带一个支持读写ntfs的镜象文件,并且使用简单,非常傻瓜化。然后删除3721的相关文件,重新启动后清理注册表和删除相关文件就行了。

    到此,我们终于把3721这个阴魂不散地幽灵彻底赶出了我们的硬盘!!

    由于不少网站基于各种原因,在显示页面的时候都会弹出3721的下载窗口,很容易误点。在ie中就能屏蔽掉该站以及其他恶意的任何下载.[/color]
     
      
     


     
     

    loading...
  • 2005-04-28

    日��

    今天又看到她了,她也跟我一��������室做����,�商觳灰�,她�Q了����型,�^��剪得很短,很有精神!!
    我不知道要跟她�f什麽好。是要��她去不去打球��是��她����用不用我�兔Γ���是��她��什麽剪了��短��!!我什麽都�]有�f,做完����我就�x�_了,去打球 ,���B很差。。�B��了三��!
    loading...