这段时间总是莫名其妙弹广告,而且是概率弹,在确定我没有带病上机之后,发现很奇怪的事情就是 每次都是某也有的推广广告,而且有雷同之处,难道说是DNS劫持?不像啊,确认没问题啊- -于是看到知乎某文大惊失色!

 

= =哎呀妈。。。不是这张图啊。。。小编!!!!!!!!

问:猎豹浏览器为什么能在桌面弹广告?
我没有打开浏览器,猎豹的快捷方式怎么会突然弹广告推广植物大战僵尸2?在微博上搜了下,貌似遇见这类情况的还不少。

答:金山号称猎豹浏览器具有“内核级”安全防护,其实是装了个KBNDrv.sys的驱动。无论你有没有打开猎豹浏览器,它的驱动程序都会在后台运行,当然也可以弹出桌面通知消息了。

之前金山发过一篇软文,证明猎豹有驱动更“安全”,不过用绿盟小四(@沈沉舟)的话来说,“一个会带着驱动来hook内核函数的"浏览器",我是绝对不敢用的,这还让不让人活了。还不如直接用IE 9,死也死个明白。更别提Firefox、Chrome了。”http://weibo.com/1273725432/yjBIA50a5

事实情况也是,电脑装乱七八糟一堆驱动,是不是真为了安全不好说,反正广告是多了,还可能莫名其妙蓝屏。以金山驱动程序编写质量,这个不是危言耸听。引用一篇金山猎豹浏览器KBNDrv.sys驱动引发蓝屏问题的技术分析:
根据蓝屏文件定位原因,猎豹浏览器驱动KNBDrv.sys将一块保存命令行的字符串缓存内存,从镜像文件路径长度开始,移动整个内存长度的内容,由于移动的范围超出了命令行字符串内存长度,因此导致了蓝屏。
详细分析KNBDrv.sys二进制代码发现,其代码存在明显的低级错误。涉及此次蓝屏故障,问题在于,KNBDrv.sys会挂钩系统内核函数NtCreateUserProcess,所有的进程创建都会调用这个系统调用,猎豹浏览器的驱动拦截到进程创建后,会拆解其中的ProcessParameters这个参数,并试图从中分析出创建进程的命令行,但是其解析代码的实现方式非常不稳定。
那么猎豹浏览器KBNDrv.sys是如何进行命令行拆解的呢?比如这样一个命令行:
C:windowssystem32cmd.exe /c
猎豹浏览器会试图将/c这个命令行拆解出来。解析出程序路径ImagePathName为"C:windowssystem32cmd.exe"以后,需要把CommandLine里后面"/C"前移抹掉ImagePathName部分,(假设pDes指向CommandLine的开始,PathLen是ImagePathName的长度,len是"C:windowssystem32cmd.exe /c"的字节长度)。
KNBDrv.sys的代码是这样的:memmove(pDes, pDes + PathLen, len)
这里存在明显的错误,如果要移动CommandLine的命令行参数部分出来,移动长度应该是CommandLine总长度减去ImagePathName和空格长度,而这里使用了总长度,就会导致发生读取缓存越界的问题。如果CommandLine的Buffer位于内存页尾部附近,且后面一个内存页是无效页,就会引发电脑蓝屏。

链接:http://www.zhihu.com/question/21810383?guide=1

 

 

小林子打字好辛苦,麻烦转载注明: 转载自林枫紫涵

本文链接地址: http://www.lfzh.org/ad_liebao.html

作者: admin