论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突

原创 2010年06月03日 15:06:00


最近360安全浏览器和金山网盾炒得很厉害,不过实际上做启发式杀毒的话,是根据病毒的行为做检测,大家都是在病毒调用的API这个独木桥走,时不时被挤下来是很正常的事情。上网搜索一下就可以看到,互相冲突的不止是这两家,还有瑞星、卡巴和基于IE的浏览器,比如傲游、腾讯TT、搜狗浏览器等。这个问题的核心在于这些软件对API的钩子的处理。

 

API hook这个东西其实DOS时代就有了,那个时候叫中断表。这个的工作机理和虚函数表类似,就是一堆函数指针,每个人调用的时候调用的是最后一个更新函数指针的代码。基于DOS的32位Windows版本(例如Windows95)用这个来转移DOS程序的16位的文件系统操作到32位的文件系统驱动(当然,如果有16位的TSR和驱动,还得把控制权交回去)。在Windows下也有类似的东西,叫做SSDT。基本上这些东西被杀毒软件用来截获文件操作,被病毒用来防止自己被发现,等等。这个有个先来后到的机制,因为先下手的可以替换所有可以用来防止被替换的函数,比如防病毒软件在病毒试图加载的时候就可以判断:“啊,这个是已知病毒,我应该杀掉”,病毒在杀毒软件试图加在的时候也可以判断:“啊,这个是杀毒软件,我最好hook这个软件的系统调用,把自己隐藏起来”。

 

但是计算机上有两个杀毒软件的时候,就会有冲突了:函数表里面在病毒加载的时候是这个样子:对于两个杀毒软件都挂钩的函数,函数表是Windows->杀毒软件甲->杀毒软件乙(假定甲先加载,而且乙会调用被hook之前的函数),对于只有一个杀毒软件挂钩的函数,函数表或者是Windows->杀毒软件甲,或者是Windows->杀毒软件乙。这样在应用程序执行一个函数的时候,有时候执行的是杀毒软件甲的代码,有时候两个都执行。只有一层的执行还好,嵌套执行的时候,如果调用杀毒软件甲的不再是系统而是杀毒软件乙,这可能造成杀毒软件甲运行异常,例如如果杀毒软件乙做了一个沙盒,杀毒软件甲访问文件的时候路径可能就是经过杀毒软件乙虚拟的路径,而出现文件找不到、配置无法保存的情况,严重的时候甚至造成蓝屏死机。

即使不是杀毒软件,也可能因为抢占系统资源而造成冲突。比如IE的地址栏是没有API的。3721、百度搜霸、CNNIC的中文实名等工具条要抢占用户的地址栏怎么办呢,就是用自己的窗口过程替换掉IE的。如果安装了一个,在按回车的时候就不会跳到另一个的网站。当然,技术上还有一些别的冲突。这种冲突会造成用户抱怨产品不能用。3721的解决方案是在网络实名插件里面去检测用户有没有安装百度,有的话就会把百度的删除掉。这当然会引起百度抗议,最后起诉到法院,3721败诉。

 

那安全软件和各种浏览器又是在什么资源上造成冲突的呢?是WinInet。这个是IE的网络层,很多浏览器都自己hook了做沙盒、脚本过滤、隐私模式或者多IE版本模拟。和前面提到的一样,一个自己hook WinInet函数的软件不可能针对市面上所有其他WinInet函数的软件做兼容性测试(比如我手头就有几个软件懒得自己写文件下载,用的杀毒软件很感兴趣的URLDownloadToFile来做的下载),所以出问题的几率还会比较大,尤其是在自己hook WinInet,造成WinInet的行为和系统的不同那个的软件里面。本来只hook自己进程的浏览器可以互不干扰,不过一些安全软件会把自己加载到每个进程然后hook掉可以hook的API,这甚至会连Flash的WinInet调用也劫持掉了,造成Flash工作不正常或者这造成浏览器在安全软件运行的时候经常崩溃。然后就有做了沙盒的安全浏览器防止安全软件被加载到自己的进程,引起安全软件公司抗议,不过目前还只是在法院打口水仗,没有像浏览器工具栏公司们那样互相起诉不正当竞争的行为。更新:好像金山已经起诉奇虎不正当竞争了。

 

总而言之,API Hook是一种非常强大的工具,可以用来接管系统和其他软件,但是强大的能力意味着更多的责任,挂钩函数作为系统API的替代物,需要在比应用软件更多的场景下测试。遗憾的是,病毒制造者也会使用这种工具,使得需要挂钩的函数经常很多;而且使用系统未公开的行为也意味着在系统更新的时候,API Hook的软件经常需要被重新编码和测试,远期的总成本比没有API Hook的软件要高得多。除非是有Visual Assist这样的市场占有率、经验、人力和时间,通常还是开发只使用正规API的软件比较容易维护。

论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突.

最近360安全浏览器和金山网盾炒得很厉害,不过实际上做启发式杀毒的话,是根据病毒的行为做检测,大家都是在病毒调用的API这个独木桥走,时不时被挤下来是很正常的事情。上网搜索一下就可以看到,互相冲突的不...
  • dj0379
  • dj0379
  • 2012年04月12日 00:42
  • 3513

安装卡巴斯基提示360 safety guard,360 antivirus,360 safe defender

当安装卡巴斯基软体时,出现「侦测到360安全卫士」而要先移除后才能继续安装,如果之前已经先行移除360安全卫士并重新开机,此时还侦测到360安全卫士的原因,通常为登录档中还残留360安全卫士相关机码,...
  • hualong0919
  • hualong0919
  • 2017年12月28日 11:43
  • 84

360浏览器安全学堂上线 提升用户安全指数

这是最美好的时代,这是最糟糕的时代;这是人人中大奖的时代,这是人人走霉运的时代;这是网购最便宜的时代,这也是网购最危险的时代;我们全都在上网,我们全都在被“网上”。   互联网的快速发展,给人们生活...
  • wenxian31
  • wenxian31
  • 2013年07月08日 18:04
  • 523

360浏览器记住密码问题

开发web页面时,有时总是遇到万恶的360浏览器记住密码问题,360浏览器记住密码的能力是史无前例的。开发过程中有些地方不应该记住密码的地方(如交易密码),360浏览器也记住了,而且还会记错成登录密码...
  • lanhezhong
  • lanhezhong
  • 2017年03月22日 11:53
  • 1094

各安全浏览器如何设2345为主页

各安全浏览器如何设2345为主页 http://www.2345.com/help/szsy.htm 如何在360浏览器、搜狗浏览器、傲游浏览器中把2345设为主页? ...
  • jiftlixu
  • jiftlixu
  • 2011年12月13日 09:07
  • 1261

rundl132.exe,logo1_.exe 病毒专杀工具

重要提示:本人测试无效(测试时间:20061115)最后做法:系统重新安装、再用瑞星杀毒工具rundl132.exe,logo1_.exe 病毒专杀工具中毒了,中毒了!rundll.exe rundl...
  • foreveryday007
  • foreveryday007
  • 2006年11月14日 08:42
  • 8921

卡巴斯基安装及设置说明

文章来源:bbs.shiandci.net一、安装之前的工作   新建Kaspersky文件夹,将上述两个文件下载于其中。(切记Kaspersky文件夹不要和WINDOWS系统目录同一分区。)   将...
  • freexploit
  • freexploit
  • 2005年01月26日 10:13
  • 3894

卡巴斯基导致蓝屏解决办法

最近升级的卡巴网络安全套装可能在系统启动时或登录后出现蓝屏故障 代码为:0×000000D1: DRIVER_IRQL_NOT_LESS_OR_EQUAL这是由于卡巴自带的防火墙网络安全过滤模块驱动程...
  • mikemiller2
  • mikemiller2
  • 2008年06月01日 20:16
  • 978

360安全浏览器修改背景色为护眼色

ie浏览器在忽略掉网页指定的颜色后,即可修改器背景颜色为系统设置的颜色,但是360浏览器不行,进行上网搜了一下,以下为修改方式: 找到360浏览器的安装目录,然后到一下路径中User Data\De...
  • a535182324
  • a535182324
  • 2014年02月20日 16:22
  • 3172

360安全浏览器下载提交两次问题

开发的下载功能,其他浏览器正常下载,360浏览器则会报错,debug跟踪发现360提交了两次,导致第二次传值为NULL,导致报错。。。 最后想到的方法是360特殊处理,将第一次的值传入session...
  • qq_36752632
  • qq_36752632
  • 2017年05月02日 09:20
  • 602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突
举报原因:
原因补充:

(最多只允许输入30个字)