IE插件早已不是个新东西了,在IE4时代就有了,但是随着恶意插件的层出不穷,又一次被人重视起来。当前很多网站在无意识或有意识的情况下被挂马,让用户下载.cab自动安装,让用户中恶意IE插件。或者当用户安装一个从第三方网站来的软件,安装过程看着一切正常,可是就在这不知不觉中用户就中了恶意IE插件。恶意IE插件真是无恶不作,随意弹出广告窗口,弹也不弹些好广告,篡改HTML内容,嵌入IFrame,篡改搜索引擎搜索结果,篡改href链接地址。由于恶意插件泛滥,才有了像360safe这样的好东东。


IE插件主要有三种:
1. ActiveX Control.
2. Browser Helper Object (BHO).
3. Browser Extensions.

ActiveX Control 例如:Flash,银行专用输入框等等。
Browser Extensions http://msdn2.microsoft.com/en-us/library/aa753587(VS.85).aspx 例如:Zend Studio,浩方对战平台等等。Browser Extensions主要扩展IE ToolBar ContextMenu 等等。
Browser Helper Object (BHO) 这个东东就是IE恶意插件的根源(好像Com的IUnknown),大多数IE恶意插件都是一个BHO。

Dino Esposito对BHO的详细示例介绍《如何使用BHO定制你的Internet Explorer浏览器》
英文原文:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/bho.asp
中文翻译:
http://www.vckbase.com/document/viewdoc/?id=1426
文章中对应的示例程序下载地址:
http://support.microsoft.com/kb/179230

就是因为这个示例程序:IEHelper 催生出了很多IE插件,如果用百度搜索IEHelper.exe最先搜索到的就是一个恶意IE插件。

大多数对IE插件介绍的文章都是基于VC6的,一般示例程序转换到VS2005下都会出现编译错,并且文章中也没有详细讲述如何安装和调试BHO。
下文内容是通过对Dino Esposito的《如何使用BHO定制你的Internet Explorer浏览器》的学习,抽取出了其中BHO的核心内容,写的一个IE BHO插件,这个插件的主要作用是屏蔽网页中所有图片,当网页展现时,让所有的图片都不显示。具体BHO的原理和工作机制在Dino Esposito的《如何使用BHO定制你的Internet Explorer浏览器》中,这里不敢班门弄斧了。 :)
下载这个BHO,用VS2005打开,F5直接运行,如果断点可以正常断住,说明这个BHO在你的VS2005下一切正常。

Click to Open in New Window

您完全可以通过这个BHO,在VS2005这种友好的IDE环境下学习BHO或者进一步进行BHO的开发。
如果断点不能断住说明BHO安装有问题。
安装BHO:BHO是个Com,BHO的安装过程其实就是一个Com的注册过程,就是把Com的uuid正确的注册到注册表中。打开WipeImg.rgs会看到:

Click to Open in New Window

其中NoRemove Browser Helper Objects 中的Browser Helper Objects要和注册表中的BHO名对上,这个键在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\下。
在F5运行后VS2005会自动在注册表中注册这个键值。

Click to Open in New Window

在IE的Manage Add-Ons中也可以看到这个BHO

Click to Open in New Window

如果您注册表中BHO的名字不是Browser Helper Objects,需要在WipeImg.rgs中修改为一致。

调试BHO:BHO是个Dll,它的入口是DllMain,Dll需要一个可运行的容器来运行它,BHO的容器就是IEXPLORE.EXE。在首次运行时VS2005会弹出选择运行容器的对话框这里需要选择IEXPLORE.EXE,如果您默认的浏览器是IE也可以选择默认浏览器。如果默认浏览器不是IE这里需要特别注意。

Click to Open in New Window

完成上面的配置,这个BHO就可以在您的VS2005中自由的Debug了。:)

File: 插件源程序

转载于:https://www.cnblogs.com/ricksun/articles/1495953.html

用VS2005开发BHO揭开IE插件的神秘面纱相关推荐

  1. 揭开人类语言的神秘面纱:从理解到处理自然语言

    https://www.toutiao.com/a6709740042509615619/ 随着人工智能的进步和技术变得越来越复杂,我们希望现有的概念能够接受这种变化或者改变自己.同样,在自然语言的计 ...

  2. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

  3. 揭开Java 泛型类型擦除神秘面纱

    转载自   揭开Java 泛型类型擦除神秘面纱 泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘 ...

  4. @程序员,为你揭开直播技术的神秘面纱!

    作者 | 阿文,责编 | 郭芮 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着Web 2.0 的普及以及移动互联网技术的发展,各种视频分享.流媒体直播类型的服务 ...

  5. 揭开均线系统的神秘面纱_揭开依赖注入的神秘面纱,并通过此快速介绍了解它的实际应用...

    揭开均线系统的神秘面纱 by Sankalp Bhatia 通过Sankalp Bhatia 揭开依赖注入的神秘面纱,并通过此快速介绍了解它的实际应用 (Demystify Dependency In ...

  6. 揭开均线系统的神秘面纱_在应用程式审查API中揭开新玩法的神秘面纱

    揭开均线系统的神秘面纱 During the #11WeeksOfAndroid the new Play In-App Review API was announced. This was a lo ...

  7. html5实现单点登录,图文并茂,为你揭开“单点登录“的神秘面纱

    概念 单点登录( Single Sign On ,简称 SSO),是目前比较流行的企业业务整合的解决方案之一,用于多个应用系统间,用户只需要登录一次就可以访问所有相互信任的应用系统. 前置介绍 同源策 ...

  8. 揭开 Growth Hacking 的神秘面纱(番外篇)+ 大结局

    揭开 Growth Hacking 的神秘面纱(番外篇)+ 大结局 覃超帝国兴亡史  12月11日 11:45 FACEBOOK  互联网  分类 :互联网 阅读:1527 抢沙发 Growth Ha ...

  9. .net单点登录demo_图文并茂,为你揭开“单点登录“的神秘面纱

    本文首发于政采云前端团队博客:图文并茂,为你揭开"单点登录"的神秘面纱 https://www.zoo.team/article/sso 概念 单点登录( Single Sign ...

最新文章

  1. 如何判断是否丢掉用户请求(转载)
  2. 处理图片(updated)
  3. 《dinv into python》开始了解python
  4. SAP Spartacus在某些屏幕尺寸下无法正常工作的原因分析
  5. 这个可能打败Python的编程语言,正在征服科学界
  6. unity捕捉全景图_DronePan:可捕捉飞机全景的应用程序
  7. MySQL----获取当前日期当月第一天,最后一天
  8. 自动化测试——接口测试——pandas——CSV文件参数化——数据驱动
  9. c语言程序设计必备单词32个,c语言编程必背单词-20210324071350.docx-原创力文档
  10. 读后感系列2:《看见》柴静(一)
  11. 打破定制化语音技术落地怪圈?从讲一口标准英音的语音助手说起
  12. 如何解决 zsh: event not found: e]st1问题
  13. 第三章 Guarded Suspension模式 等我准备好哦
  14. Encoder-Decoder 模型架构详解
  15. 网易云音乐导出歌单-速食版
  16. SQL server 数据库表的配置及其表的导入导出
  17. Matlab显示串口收发的中文数据
  18. java计算机毕业设计高校游泳馆信息管理源码+数据库+系统+lw文档+部署
  19. 硬件系列(四)-------------Android标签打印机连接与打印位置调动方法总结
  20. 基于FPGA的VGA视频弹球游戏

热门文章

  1. 常见应用层协议都是基于什么运输层协议的
  2. 服务器出现Cause: java.sql.SQLSyntaxErrorException: Table ‘ssmbulid.books‘ doesn‘t exist解决方法
  3. 智慧数字经营小程序存在的意义和价值分析
  4. vue使用watch监听拿到props的传值
  5. gzip和gunzip命令
  6. HTML5新标签-结构标签、表单元素、媒体标签
  7. phpstorm连接远程服务器配置
  8. Rextrofit中网络请求空字段传递或过滤
  9. 推荐5款实用高质量的APP
  10. layui弹出层,点击关闭按钮确无法关闭