查看: 3587|回复: 4
收起左侧

[金山] (转)技术分析称金山猎豹浏览器导致电脑蓝屏

 关闭 [复制链接]
5370077
发表于 2013-9-27 15:37:54 | 显示全部楼层 |阅读模式
  最近不少网友反映,在用金山猎豹浏览器上网时,电脑经常出现蓝屏死机的情况。网友截图显示,一个名为KBNDrv.sys的文件是蓝屏的罪魁祸首。经技术人士分析,KBNDrv.sys是猎豹浏览器的驱动程序,该程序存在低级错误,因此引发用户电脑蓝屏。

  据了解,这已经不是金山旗下产品首次出现蓝屏问题。早些时候,金山毒霸推送微软补丁曾先后两次造成大面积蓝屏故障,致使近千万金山用户受到蓝屏故障影响。
  以下是金山猎豹浏览器KBNDrv.sys驱动蓝屏问题技术分析:
  根据蓝屏文件定位原因,猎豹浏览器驱动KNBDrv.sys将一块保存命令行的字符串缓存内存,从镜像文件路径长度开始,移动整个内存长度的内容,由于移动的范围超出了命令行字符串内存长度,因此导致了蓝屏。
  详细分析KNBDrv.sys二进制代码发现,其代码存在明显的低级错误。涉及此次蓝屏故障,问题在于,KNBDrv.sys会挂钩系统内核函数 NtCreateUserProcess,所有的进程创建都会调用这个系统调用,猎豹浏览器的驱动拦截到进程创建后,会拆解其中的ProcessParameters这个参数,并试图从中分析出创建进程的命令行,但是其解析代码的实现方式非常不稳定。
  那么猎豹浏览器KBNDrv.sys是如何进行命令行拆解的呢?比如这样一个命令行:
  C:\windows\system32\cmd.exe /c
  猎豹浏览器会试图将 /c 这个命令行拆解出来。解析出程序路径ImagePathName为"C:\windows\system32\cmd.exe" 以后,需要把CommandLine里后面"/C"前移抹掉ImagePathName部分,(假设pDes指向CommandLine的开始,PathLen是ImagePathName的长度, len是"C:\windows\system32\cmd.exe /c"的字节长度)。
  KNBDrv.sys的代码是这样的:memmove(pDes, pDes + PathLen, len)
  这里存在明显的错误,如果要移动CommandLine的命令行参数部分出来,移动长度应该是CommandLine总长度减去ImagePathName和空格长度,而这里使用了总长度,就会导致发生读取缓存越界的问题。如果CommandLine的Buffer位于内存页尾部附近,且后面一个内存页是无效页,就会引发电脑蓝屏。
lingchaoqun
发表于 2013-9-27 15:40:27 | 显示全部楼层
好吧 战火烧到金山和小米了。。。
zjb0923
发表于 2013-9-27 15:45:22 | 显示全部楼层
是产品肯定编写有漏洞,只提别人的缺点不说自己的问题,更新修复就是了,非要让用户卸载吗?!试问谁不会犯错,难道有些厂商请的西天神佛集团编写软件吗?!如果真是这样,那无话可说,因为我头上还戴着某个成员给的紧箍咒呢
dayu66888
发表于 2013-9-27 15:46:03 | 显示全部楼层
从猎豹内测就一直用~~
一直没蓝过
一个笨鸟
发表于 2013-9-27 15:50:50 | 显示全部楼层
文章来源是哪里?
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-18 10:51 , Processed in 0.130410 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表