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

  • A+
所属分类:逆向工程

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

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: