论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的软件比较容易维护。

在应用程序中集成自动完成功能

  在应用程序中集成自动完成功能本文的很多内容翻译自使用自动完成这篇文章。介绍自动完成功能,就是用户在输入时,程序自动提示匹配用户输入的条目,并且/或者自动输入剩余部分,自从IE提供了表单和地址栏的自...

GPU异步V-Sync技术方案

2014年中,我在Intel内部提交了一个名为“异步Timing”(又名“异步V-Sync”)创新方案,用于解决GPU使用V-Sync同步所导致的问题。但十分可惜的是,Intel的创新审核委员没有通过...

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

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

赛门铁克、卡巴斯基被内地列入禁用安全软件名单

据路透社报道,出于安全因素考虑,中国政府已将美国反病毒软件供应商赛门铁克、俄罗斯的卡巴斯基实验室排除在安全软件供应商之外。周日早些时候,《人民日报》在其英文Twitter账号上发布消息,称政府采购单位...

360与卡巴斯基冲突问题

  • 2009年01月16日 11:13
  • 28KB
  • 下载

360安全卫士+卡巴斯基7.0.rar

  • 2008年10月23日 11:45
  • 38.12MB
  • 下载

\t\t每日卡巴斯基安全部队2011激活码及激活KEY,将免费进行到底

上一篇:无锡 新区 送水 送水 纯净水 ( 桶装水 ) 免费 送水上门 无锡新区送水_无锡新区送水公司_无锡新区送水网 ...

<福利>卡巴斯基一年免费以及一些使用软件

卡巴斯基反病毒软件是世界上拥有最尖端科技的杀毒软件之一,总部设在俄罗斯首都莫斯科,全名“卡巴斯基实验室”,是国际著名的信息安全领导厂商,创始人为俄罗斯人尤金·卡巴斯基。公司为个人用户、企业网络提供反病...

免费杀毒软件卡巴斯基安装

卡巴斯基最近将其杀毒软件免费给个人用户使用了,在此分享一下,需要下载的小伙伴可以到我的网盘里下载,我会将下载地址放到下面。并且演示一下卡巴斯基的安装,在此声明,本人使用的是windows10操作系统,...

卡巴斯基实验室发现了一个被称为StoneDrill的新型复杂的Shamoon-Linked恶意软件

卡巴斯基实验室的研究人员发现了有关可怕的Shamoon 2恶意软件的更多信息。 专家发现了一个新的复杂的恶意软件被称为StoneDrill,链接到Shamoon 2和Charming Kitte...
  • Anprou
  • Anprou
  • 2017年03月07日 15:02
  • 332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突
举报原因:
原因补充:

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