恢复被"维金"病毒感染的exe文件--我和病毒作斗争的3天

  我今天非常气愤,上一次机器中毒不知道是多久的事情了。这次这个该死的Logo1_.exe修改了我机器上所有分区的exe文件,我的大多数软件都没有装在C盘,而只有C盘做了ghost的镜像,所以心爱的软件们全军覆没,又要花很多时间来一个一个重装了。然而这只是恶梦的开始,我是个怀旧的人,软件大多不用最新的,都是古老的最优秀的版本,不占内存,速度快,但是它们太老了,网上都下不到了,而且就算是重装系统,也要重新分区才重装,不然不知道病毒还躲在哪个角落里蠢蠢欲动。

  我只有一个选择,杀毒,修复被病毒感染的文件。

以下是关于这个病毒的参考资料
病毒大百科全书
http://www.viruslist.com/en/viruses/encyclopedia?virusid=136621
http://www.viruslist.com/en/viruses/encyclopedia?virusid=69620
卡巴斯基反病毒2006年10月08日至2006年10月14日一周病毒预报
http://www.kaspersky.com.cn/virus-info/2006/10/102.htm#1
中国网管论坛:
http://bbs.bitscn.com/redirect.php?tid=65232&goto=lastpost

  从这些资料里面我知道这个病毒叫“维金”,也有叫“威金”的,让无数网管头痛过,号称“网吧杀手”。从google里知道,大多数人对中了这个病毒的建议是重分区,重装,不要想挽救了。我机器(WinXP sp1)上这个病毒的特征:

ghost恢复完C盘以后,第一次启动,运行其它分区的.exe,发现被注入以下文件:
%WinDir%/Logo1_.exe
%WinDir%/uninstall/rundl132.exe(注意是数字"1"不是字母"l")

注册表被添加:
[HKCU/Software/Microsoft/Windows NT/CurrentVersion/Windows]
 "load"="%WinDir%/rundl132.exe"

  要是在这种状态下你重启,小家伙就会变成各种各样的名字在机器里到处跑,而且每重启一次就会多很多进程,具体症状看上面我给出的参考资料吧。我免疫这个病毒的方法,在系统刚回复完的状态下,删除%WinDir%/Logo1_.exe,在下面建一个文本文件,把名字和后缀改成Logo1_.exe,属性改成只读文件,这样病毒想再往这里复制的时候就复制不过来了,同理在%WinDir%/uninstall/删除原来的文件,建立rundl132.exe,只读。下次重启时病毒会根据注册表里的启动项去运行rundl132.exe,由于这个文件是你建的空文件,所以病毒不会运行。
  现在已经免疫了,很多论坛上就教你怎么免疫,但是被感染的文件却没法恢复。找遍了kaspersky/norton/macfee/kv/金山/瑞星,每个软件都说自己能查杀这个病毒,但是我装完一遍之后一个都不起作用,可能是病毒没有在运行所以它们查不到吧,它们出的专杀工具也只能根据病毒特征帮你免疫,对恢复感染文件却一点帮助没有。直到我看到了一段Delphi写的代码,用来恢复感染文件,我不会Delphi,也没有它的编译环境,所以决定自己写一个专杀。
  来分析病毒,是注入型的,感染所有它搜索到的Windows PE Exe文件(PE是portable execute,想知道google一下吧),我发现它把自己在exe文件的头部,之所以不加在中间,可能是因为如果加错位置,加到一条机器指令之间会让exe和病毒体都不能正确运行;不加在尾部,因为exe文件运行的时候不一定都运行到尾部才退出,所以病毒体不一定会被执行。我机器上病毒的大小是55937字节,虽然rundl132.exe和Logo1_.exe名字不一样,但它们大小都一样的,用16进制工具比较这两个文件,内容完全一样,再和染毒的exe文件比较,发现就是简单的吧病毒整体55937字节加在exe前面,所以在exe文件的0x0000到0xda80是病毒,在0xda80的位置,你能看到exe文件原来的文件头(发现这个就好办了),那么现在要恢复exe,就需要写一个工具,找到机器上所有的exe文件,判断它们的头部55937字节是否和病毒文件一样,一样的话把它去掉,保留0xda80后面的内容覆盖原来的exe。这也是好多人说中毒以后exe文件的图标会花的原因,因为图标也是包含在exe文件内的一段数据,之所以能显示出来,是因为有个偏移量从exe文件头开始到这个偏移量的位置正好就是这个图标的数据,如果文件头被加了东西,这个偏移量从新的文件头向下找,自然找不到原来数据的位置,所以图标就花了。
  我现在需要快速开发,而且是在带毒的机器上开发,所以选了C#,C#的exe文件需要在中间层解释运行,所以就算病毒感染了工具,在中间层的解释器上x86的机器码也发挥不了作用。但是由于我对C#运用不好,所以写出来的工具很难用,但它确实有用,我把工具和源代码都放出来,需要的话自己下载去用吧。
  工具叫killLogo1_,介绍下用法:
1.运行cmd(command line,命令行),找出每一个分区下的所有exe文件,命令是这样的:
dir /s c:/*.exe > c:/c.txt回车
意思是显示c盘和所有子目录下的exe文件,输出到c盘根目录下的c.txt文件
"dir空格/s空格c:/*.exe空格>空格c:/c.txt",别弄错了
2.用windows的记事本新建一个空c_path.txt,保存为UTF8编码,一顶要UTF8,我的工具只能识别这种编码,否则查毒路径上有中文名会出错,找不到文件。然后把c.txt文件中有exe文件路径的行,复制到c_path.txt,每个路径一行,前后不能有空格,每个路径的最后加上“/”。然后同样的方法,把d,e,f,g,...盘上的有exe文件的路径也存到d_path.txt,e_path.txt,...
3.如果没有.net的运行环境,到微软的网站去下载
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=262D25E3-F589-4842-8157-034D1E7CF3A3
Microsoft? .NET Framework 1.1 版可再发行组件包,我用的是.net v1.1,更高的版本可以向下兼容,所以装2.0以上也没问题。
4.运行killLogo1_.exe,点"载入路径文件",把刚才弄的c_path.txt载进去,一次只能载一个,然后点"查毒",查完以后再点"清除"。必须按这个顺序,否则不行。killLogo1_.exe同路径下有一个vir.data,是病毒体,为了和exe文件头比较用的,不要删除,为了防止有人误运行,我把后缀.exe改成.data。
5.前面说了我中的毒是55937字节,听说这个病毒有很多变种,所以长度可能会变,那么我的工具就清除不了了,在使用之前你可以看看你的Logo1_.exe或rundl132.exe是不是55937字节,我提供了工具源码,如果你和我的长度不一样,到源码里搜搜55973,把所有搜到的都改成你的长度,编译,然后就可以用了。
6.很难用是吧,但是为了清除病毒,用吧

下载地址:
http://wangshi.once.googlepages.com/killLogo1_.rar

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值