最近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安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突.相关推荐

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

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

  2. 360强行卸载金山网盾案败诉 被判赔款30万元

    5月11日消息,今天北京市第一中级人民法院今日做出公开宣判,360对金山网盾商品信誉诋毁及强行卸载等行为构成不正当竞争,法院判令360立即停止一切不正当竞争行为,公开做出说明消除影响并赔款30万元. ...

  3. 从360安全卫士卸载金山网盾看产品设计

    闹得沸沸扬扬的"360安全卫士卸载金山网盾"事件中,别人关注的是国内IT界两个豪门之间的是非,其实这里面最有看头的,是学习一下360安全卫士的产品经理如何熟练的通过产品交互手段操纵 ...

  4. 360强行卸载金山网盾 致大量用户系统异常

    近日,360安全卫以所谓"兼容"问题强行卸载金山网盾,在经过金山安全的数次声明和网友的谴责之下,依然对网盾实施全面"封杀".在让百万用户面临安全风险的同时,金山 ...

  5. 法院判定360恶意打压金山网盾 赔款30万元

    今天北京市第一中级人民法院今日做出公开宣判,360对金山网盾商品信誉诋毁及强行卸载等行为构成不正当竞争,法院判令360立即停止一切不正当竞争行为,公开做出说明消除影响并赔款30万元,这是法院首次认定3 ...

  6. 360安全卫士去广告、去多余按钮、与金山网盾等软件共存方法组合

    一.去除360安全卫士主界面广告的方法: 1.关闭360安全卫士/360杀毒的自我保护 2.打开360安全卫士安装目录下的"config/ExaminUI.xml"文件,将第三行的 ...

  7. 360安全浏览器 v7.0.0.134 官方版

    360安全浏览器 v7.0.0.134 官方版 软件大小:42.3MB 软件语言:简体中文 软件性质:常用软件 软件授权:官方版 更新时间:2014-04-28 应用平台:/Win8/Win7/Win ...

  8. 金山网盾漏洞已第一时间修复、用户无风险

    2010年5月22日(或许更早),奇虎360公司发现金山网盾存在一个漏洞,但其并未告知金山安全公司,而是在市场上进行大肆放大宣传.2010年5月25日上午,我公司接到国家计算机网络应急技术处理协调中心 ...

  9. 360浏览器登录_360安全浏览器12下载-360安全浏览器12最新版下载

    360安全浏览器12是一款比较不错的浏览器软件,能够让你轻松的去进行上网,不用担心各种卡顿,给你带来很多乐趣,让你轻松上网冲浪,喜欢的快来下载看看吧. 360安全浏览器12特色: 1.拥有国内最大的恶 ...

最新文章

  1. java 根据ip获取mac地址_利用java如何根据IP获取mac地址
  2. 手机壳释放致癌物质“苯”吗?专家:确实会
  3. 【图论专题】欧拉路径和欧拉回路
  4. ewebeditor 上传大内容文本注意点
  5. 键盘 Input子系统
  6. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1.2 架构师的职责
  7. 加快读博失败的10种方法
  8. 开始使用Google Analytics 示例
  9. 入门SVN基础使用教程
  10. 计算机五笔打字员,mac五笔打字软件 五笔打字员mac
  11. 微信小程序 选项卡设置
  12. html 去除ico,去除html页面中GET《 http://localhost:8080/favicon.ico 404 (Not Found)》
  13. IOS开发 生成app图标
  14. 人工智能导论复习整理(一)
  15. 大数据平台架构包含哪些功能
  16. 又发福利!日历小程序源码
  17. 软件工程概论-- 详细设计,过程设计的6大工具:程序流程图,判定表,N-S图和判定树之间的区别, PAD图的优点?
  18. windows terminal ssh连接
  19. 三角函数与反三角函数的拓展
  20. Category (mathematics)

热门文章

  1. 理解react生命周期,以及react生命周期的使用场景
  2. 苹果iPhone 8或被阻击!
  3. Linux定时任务详解
  4. oracle:时间间隔
  5. SQL Server 查看被锁的表
  6. 传记-《成为米歇尔·奥巴马》书中的精髓:米歇尔·奥巴马是怎样克服种族歧视、冲破阶层天花板,成为美国首位非洲裔第一夫人的。
  7. 华为NAT地址转换(静态、动态)及端口映射
  8. 跟奥巴马一起编程(15)
  9. 对近期自我状态的反思及总结
  10. <<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料