金山毒霸引发系统崩溃问题技术分析

2014-03-25 241943人围观 ,发现 12 个不明物体 网络安全

昨天晚上,金山论坛贴出一条公告:关于部分64位Windows 7/8用户系统启动异常的解决办法http://bbs.duba.net/thread-23083105-1-1.html

金山公告里,并没有提bug原因是什么。不过这次确实中招的很多,群里昨天就有人苦逼正加着班,中间重启下电脑系统就进不去了。也幸亏这样,金山偷偷摸摸更新驱动搞摊系统被抓了个现行。简单分析下原因吧:

一、为什么开机时会进不去系统,并提示0xC0000359错误

操作系统在加载BOOT型驱动文件时,会调用到winload.exe! ImgpLoadPEImage,这个函数会判断IMAGE_NT_HEADERS. FileHeader. Machine的值

如果在64位系统上,Machine的值为IMAGE_FILE_MACHINE_I386(0x014c),则不加载,并返回c0000359

二、什么驱动惹得祸

Windows启动管理器显示的很清楚:windows\system32\drivers\KAVBootC.sys

进一步分析,金山毒霸有一个文件kdf.exe(md5: ecabc14be9008e79bee7696601927762,签名时间2014-03-22 15:12:54),关机时改写KAVBootC.sys服务的注册表,没有判断操作系统是32位还是64位,就把该服务的文件统一写成了\windows\system32\Drivers\KAVBootC.sys,导致64位机器上也会去加载32位的驱动程序,系统无法启动;实际上,64位系统对应的驱动文件名应该是KAVBootC64.sys

在昨晚金山更新的版本里,kdf.exe对这个问题进行了修复,加上了先判断是32位系统还是64位系统的逻辑。(md5: 0ac5e33f91fb93c62d2db86b11446f76,签名时间2014-03-22 18:12:05)

问问金山

你们软件更新发布前不做测试的吗?

之前跟微软补丁冲突,金山还声明说“微软没有对补丁做兼容性测试”,这次可是金山毒霸自己更新程序。这么明显的bug,在64位机器上更新后只要关机或者重启,100%必现系统无法启动的情况,竟然就草率发布了。

根据我这边一个数据,X64的比例大概在10%。昨天金山事故时间段有三个小时,而且都在白天,估算占全天用户量的15%-20%。按金山自己宣传的上亿用户,就算周末只有一半人用电脑吧,至少也是5000w*10%*15%=75w台电脑。难怪windows7贴吧昨天被刷屏。按某人说法,金山真成电脑维修商的好伙伴了。

这些评论亮了

  • 那个疼 回复
    金山死,百度强,瑞星上,腾讯拦;
    山陆零,好榜样,只是哥,从未装;
    傻了吧,自逞强,毁了誉,笑了狼;
    逼得已,已格盘,速卸你,用国墙.
    )34( 亮了
  • 艾斯比 回复
    金山毒霸完成了一次双杀……金山毒霸完成了一次三杀……金山毒霸完成了一次疯狂杀戮……金山毒霸正在暴走……for(10....75w){金山毒霸正在暴走……金山毒霸已经超神了,求求谁去杀了他吧!}
    )20( 亮了
  • hellen 回复
    这问题我十年前写的程序就能引发了
    )8( 亮了
发表评论

已有 12 条评论

取消
Loading...
css.php