昨天晚上,金山论坛贴出一条公告:关于部分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贴吧昨天被刷屏。按某人说法,金山真成电脑维修商的好伙伴了。