申明:  本文涉及到的技术只供参考研究之用,不可用于非法行为,本人不负责。
A. 写在开始:
继写了木马技术研究第一部分后, 我发现我的blog,PageRank上升了.最终发现中国的很多网站上摘抄我blog上的一些文章. 我写的东西很少,而能让别人摘抄, 怎么说也是一件荣幸的事. 这里只希望摘抄文章的朋友能够继续深入研究,
为中国的反流反木马事业做点贡献. 我的文章能启到抛屎引玉的程度,那就可幸了.
今天我要写的主题是反流技术之IE插件技术研究第一部分.
google: IE插件技术, 结果是很多IE插件安装程序的下载...
从而让人想到的是中国internet 网的现状. 流软横行的世界.
3721 VS 杀毒软件的事,更是让人郁闷. 因此, 让我提笔写点IE插件技术的研究的相关文字.
 
B. 什么是流氓IE插件, 什么是IE插件技术
技术不存在流氓不流氓, IE插件技术并非从古到今就是用于流氓事情的.
所以本文所讨论的技术希望大家能用于反流事业. 但现在要反流必须先要研究流氓软件.
例如:
3721使用的技术是所有流氓软件都可以参考的.
早在2000年,3721没有出来的时候,就已经有了使用BHO技术的IE Tool Bar. 现在市面上的IE Tool bar 层出不穷.让人感觉好像是能做IE Toolbar的都做了自己的IE Toolbar, 都说自己Toolbar有多少历害, 什么拦截窗口啊的...
从社会经济角度看, 大多数公司都是利益为重, 开公司就是为了赚钱. IE Toolbar 至少是一种非常好的宣传方式.
从技术角度看, 没有一家公司的toolbar 能做到真正意义上的: 拦截窗口 这个功能,更不用说其他什么功能了.或许有些toolbar作者看了这话不服, 那么请继续看下去就知道了.我会在技术层面上分析的很清楚.
从技术角度看3721和流氓软件也差不多. 但3721做的事和流氓软件做的事完全不一样.流氓软件可能会隐藏使用IE打开一个网页, 那个网页的流量自然是增大了, 同时还可能使用下载者之类的局域网感染技术, 如果本机所在局域网的某些或全部电脑的安全做的不是太好. 那就有被感染的危险.
总之有一点, 你的代码在IE进程运行或者是在Explorer进程运行,或者是自己独立的进程运行或者是其他无进程方式运行, 那么你的Toolbar, 你的插件 还有什么事情不能做的?
关键看你的插件做的事情是什么事情, 而来定义是否是属于流氓性质.

C. IE插件主要实现技术
1.分析:
大家都知道Microsoft 公司出品的 Internet Explorer 浏览器, 熟称: IE, 使用Internet Explorer_Server class封装,
其中实现: IWebBrowser2 接口, GUID: {D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}
而IWebBrowser2 接口下有: 非常重要两个Navigate和Navigate2 API
具体参考MSDN.
 
MSDN上的描述:
This interface enables applications to implement an instance of the WebBrowser control (Microsoft® ActiveX® control) or control an instance of the InternetExplorer application (OLE Automation). Note that not all of the methods listed below are supported by the WebBrowser control.
Remarks
 The IWebBrowser2 interface derives from IDispatch indirectly. IWebBrowser2 derives from IWebBrowserApp, which in turn derives from IWebBrowser, which finally derives from IDispatch.
Note 
 The IWebBrowser and IWebBrowserApp interfaces are deprecated.
Interface Information:
Stock Implementation shdocvw.dll
Custom Implementation No
Inherits from IDispatch
Header Exdisp.h
Minimum availability Internet Explorer 4.0
Minimum operating systems Windows 95, Windows NT 4.0, Windows CE 2.12

从MSDN上了解到是这样的情况: IDispatch->IWebBrowser->IWebBrowserApp->IWebBrowser2
另外所有的封装是在shdocvw.dll里面.
发现shdocvw.dll, BROWSEUI.dll是相互依赖的, 使用了delayload技术. 同时delayload 了非常重要的MSHTML.dll
当然这些我们只作初步研究, 如果再深入研究, 会发现这些dll里面导出了很多实用的API. 以及他们之间是如何相互工作的.
我们的主要研究目标就是: IWebBrowser2 interface和IHTMLDocument2 interface
 
2. 实例演示应用IWebBrowser2, IHTMLDocument2:
关于WebBrowser View, Microsoft出品的VC中的MFC库已经封装了一个CHtmlView的class, 可以非常方便的让开发人员使用.
那我们先来看看这个CHtmlView
2.1. 简单CHtmlView应用的实例:
注意, 请有COM, VC基础的程序员参考实例. 没有相关基础知识的程序员,请继续学习基础知识.
使用VC随便建个单文档的窗口应用程序, View继承于CHtmlView 就可以了.
step 1:
OnInitialUpdate()
里面写上: Navigate2(_T("http://www.google.cn/%22),NULL,NULL);
代表使用本HtmlView 打开 http://www.google.cn/
step 2:
通过IHTMLDocument2得到源HTML代码.
CHtmlView 实现了: LPDISPATHCH GetHtmlDocument() API
所以我们可以非常方便的得到IHTMLDocument2对象, 代码如下:
CComPtr<IDispatch> pDisp = this->GetHtmlDocument();
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML = pDisp;
当然我们可以直接使用:
IHTMLDocument2* .. 的方式, 但是使用智能指针, 何乐不为.
下面代码实现从IHTMLDocument2 得到 Body 对象,然后得到源HTML代码.
CComQIPtr<IHTMLElement> body;
HRESULT hr = spHTML->get_body( &body );
if (FAILED(hr))
 return FALSE;

// Get the HTML text
BSTR bstrHTMLText;
hr = body->get_outerHTML(&bstrHTMLText); // get_innerHTML( ... ) 也行.
if (FAILED(hr))
 return FALSE;

加public virtual API: virtual void OnDocumentComplete(LPCTSTR lpszURL);
实现在完成打开一个URL后, 取得源HTML代码. 并弹出非模式对话框显示源HTML代码.
具体限于篇幅, 参考源程序:  DVBowser_Code.zip

2.2. 深入CHtmlView应用
有了第一个CHtmlView应用的示例实验, 相信大家比较了解HtmlView 的机制了.
那我们来偿试实现一下现在市面上IE插件实现的一些功能.
功能a. 转Url
调用:Navigate2 API就可以了.
功能b. 改Google 首页图片为baidu.com的logo:
http://www.baidu.com/img/logo.gif
(该功能流软作者可以扩展为非常复杂的非常多的功能.
这里只是为了了解相关技术, 只作一个功能的单一示例.)
重新设置Body 源HTML代码就可以实现.
关键代码:
// Replace
strText.Replace( "/intl/zh-CN/images/logo_cn.gif", "http://www.baidu.com/img/logo.gif" );
 
BSTR bszNewHTML = strText.AllocSysString();
hr = body->put_innerHTML( bszNewHTML );
SysFreeString( bszNewHTML );

if (FAILED(hr))
return;

如图:

功能c. 弹IE
一句话代码:
WinExec( "EXPLORER.EXE http://blog.csdn.net/davemin/", SW_NORMAL );
让所有IE拦截工具都无效.
当然我们也可以先查注册表, 找到IE路径, 然后来打开.
如果改参数: SW_NORMAL 为SW_HIDE, 那么用户就看不到了. 就更下流了.
本文来自猪悟能's博客 http://www.hackpig.cn/ , 原文地址:http://www.hackpig.cn/post/196.html

上接<反流技术之IE插件技术研究第一部分>: http://blog.csdn.net/davemin/archive/2007/01/05/1474858.aspx
申明:  本文涉及到的技术只供参考研究之用,不可用于非法行为,本人不负责。

2.3. BHO 示例
A. 下面我讲下,如何使用Microsoft Vistual Studio 6.0 中的VC 建BHO 程序。
先找一个Microsoft SDK安上。 我用的是这个:
October 2002 SDK Release Notes
The Microsoft® Platform SDK provides developers with documentation, header files, and sample code necessary to write software for Microsoft Windows® and Microsoft Windows NT®. The Platform SDK simplifies installation by integrating components from different SDKs and installing them in common paths on your hard disk. It can also set the search paths used by Microsoft Visual Studio®.

Step 1). 使用wizard, 选择ATL COM AppWizard, Project Name = BHOTest
Step 2). 用不用MFC, 自己选择,高手可能根本不需要使用MFC, 或者如果为了这个程序的可执行文件的最小化不选择MFC为好。我这里就不选择MFC了。 其他不变。
Step 3). New ATL Object, name = MyBHO, 到这里其实和普通的ATL Com 组件一模一样,没有两点区别。
Step 4). 增加父类, public IObjectWithSiteImpl<CMyBHO>, 加COM_INTERFACE_ENTRY(IObjectWithSite), 加相关事件。
参考源程序。不能在这里一一道明。

Step 5). 增加BHO register 到MyBHO.rgs 文件中.
HKLM
{
    SOFTWARE
    {
        Microsoft
        {
            Windows
            {
                CurrentVersion
                {
                    Explorer
                    {
                        'Browser Helper Objects'
                        {
                            {C28BCCCA-BE95-40EB-A5A9-8384C9D2E478}
                        }
                    }
                }
            }
        }
    }
}

Step 6). IE事件处理, Invoke(...)
打开网页完成事件: DISPID_DOCUMENTCOMPLETE
其他事件可以参考:
http://msdn.microsoft.com/workshop/browser/mshtml/reference/events/htmlformelementevents/htmlformelementevents.asp
注意include MSHTMDID.H

经过这样6步,一个最基本的BHO程序已经完成了。程序员可以自己在其中加减代码。
而且可以把上一篇中讲到的东西,以及代码都Copy过来使用。
具体参考源程序: BHOTest1_Code.zip
 
B. 对IE输入口令的威胁
近两年来很多重要机构开始慢慢重视IE输入数据的不安全性,特别是金融系统的在线交易。
但大部份金融系统的web端还是非常危险, 而且就这样简单的BHO程序就可以取得所有输入的机密数据。
这里对https://reg.163.com/logins.jsp 作一个例子吧.
实现:实时获取输入的163 passport 账号密码。
具体参考源程序: BHOTest2_Code.zip

C. 对注册账号以及论坛或blog垃圾广告回复的应用
从第二个代码:BHOTest2_Code.zip  例子里面应该可以看到,其实完全可以让IE达到自动化。
或者可以创建一个Dialog 来操作设置,然后自动注册账号,自动在论坛里面发垃圾数据。或者是自动在各种blog里面加垃圾数据的评论。
至于IHTMLInputElement 的设置值,不同的html tag使用不同的API, put_value 或者put_checked或者其他等等,参考msdn.
填写form相关数据后,调用:IHTMLFormElement->submit()  API 就自动提交了表单。可以实现自动:登录,  回复贴子, 加blog评论等等功能。
这里只作这样的简单说明,不再提供相关源程序。请参考前面两个Examples。
 
 
2.4. 其他应用IWebBrowser2接口的浏览器
其实应用IWebBrowser2接口的浏览器,只需要调用IShellWindows COM接口,就可以完全列出来了。
参考下面代码。 
    USES_CONVERSION;
   
    //
    ::CoInitialize(NULL);   
    CComPtr< IShellWindows > spShellWin;
    HRESULT hr = spShellWin.CoCreateInstance( CLSID_ShellWindows );
    if ( FAILED ( hr ) )
    {
        return NO_ERROR;
    }

while ( TRUE )
    {
        long nCount = 0;
        spShellWin->get_Count( &nCount );
        if( 0 == nCount )
        {
            continue;
        }

for( int i = 0; i < nCount; i++ )
        {
            CComPtr< IDispatch > spDispIE;
            hr=spShellWin->Item(CComVariant( (long)i ), &spDispIE );
            if ( FAILED ( hr ) )    continue;
           
            CComQIPtr< IWebBrowser2 > spBrowser = spDispIE;
            if ( !spBrowser )        continue;

//...
        }
    }
   
    // ...

2.5. 补充说明
在2.2. 里面讲的内容,可能涉及到很多东西。比如吧,前几天看到网上一个新闻说这样一件事:一个IT公司为一个公司的网站提升baidu,google排名,
反正怎么搜索,都排在第一。那公司就高兴了,给钱了,交易了。后来那公司发现他们自己的电脑上不是这么回事。  那IT公司就说了,要装软件。
呵呵,其实就是2.2这一节里面讲的技术实现的。
想起来甚是好笑。
 
3. 对反BHO的思考
看了几个反流的软件,觉得他们处理BHO相关的程序过于太狠了。感觉只要是BHO通杀,除了你是知名的安全BHO,如:google toolbar。
如果这样反BHO, 那以后就不可能有什么正式的BHO组件超的过google toolbar了,因为还没有出来就被查杀了。不管是好是坏。
所以个人以为能更改进一步为最好,BHO从技术上讲不见得就是恶意程序。
 
4. 写在最后
两根烟一杯酒,杭州的冬天,还有这个漫漫长夜。
我冷的有点发抖,担心中国的internet 网上流软横行啊,今天又发现在一个我做过安全设置的电脑上,出现了KMD(kernel mode driver)的流软。
如此下去,反流任务更难了。我不相信,目前流行的反流工具能清除所有流软。特别是KMD级别的。
因为我希望大家能写些更牛的反流软件以自由软件的形式,供中国普通网民使用。
本文来自猪悟能's博客 http://www.hackpig.cn/ , 原文地址:http://www.hackpig.cn/post/197.html

转载于:https://www.cnblogs.com/zdxster/archive/2011/01/27/1945896.html

反流技术之IE插件技术研究相关推荐

  1. Javascript笔记:(实践篇)从jQuery插件技术说起(上篇)

    最近写了个网站,当时借鉴了很多相关网站前端技术,为了让客户的体验更加好,我在网站前端加入了相当多的校验代码,因此代码显的特别臃肿.虽然开发过程中我将前端代码重构了三次,但是我还是对我原来写的代码不满意 ...

  2. Android 插件技术实战总结

    前言 安卓应用开发的大量难题,其实最后都需要插件技术去解决. 现今插件技术的使用非常普遍,比如微信.QQ.淘宝.天猫.空间.携程.大众点评.手机管家等等这些大家在熟悉不过的应用都在使用. 插件技术可以 ...

  3. 计算机插件技术应用原理,计算机软件技术中插件技术的运用

    计算机软件技术中插件技术的运用 在我国科技水平的不断提升下,计算机软件方面的功能也在持续更新.其中插件技术作为计算机软件中实用性比较强的一项功能,一直被研究分析.下面是小编搜集整理的相关内容的论文,欢 ...

  4. 【腾讯Bugly干货分享】Android 插件技术实战总结

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/1p5Y0f5XdVXN2EZYT0AM_A 前言 安 ...

  5. 「SAP技术」SAP SD微观研究之根据销售订单查询到该订单发货的批次

    「SAP技术」SAP SD微观研究之根据销售订单查询到该订单发货的批次 事务代码VL06O, 点击'List Outbound Deliveries',进入如下界面, 输入相关查询参数,执行, 点击' ...

  6. 【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 )

    文章目录 一.插件化技术弊端 二.恶意插件化程序的解决方向 三.常用的插件化虚拟引擎 一.插件化技术弊端 在之前的 Android 应用中 , 部分黑客将应用破解 , 植入自己的恶意代码 , 然后进行 ...

  7. 【技术综述】人脸颜值研究综述

    文章首发于微信公众号<有三学AI> [技术综述]人脸颜值研究综述 今天带来一篇人脸识别中的颜值打分技术,所谓"颜值",基于什么标准来评判高低呢?既然是个"数值 ...

  8. python实现高校教务管理系统_基于Python技术的教务管理系统的研究与开发

    龙源期刊网 http://www.qikan.com.cn 基于 Python 技术的教务管理系统的研究与 开发 作者:戴雯惠 来源:<价值工程> 2018 年第 27 期 摘要:随着教育 ...

  9. 基于区块链技术的数据资产管理机制研究

    点击上方蓝字关注我们 基于区块链技术的数据资产管理机制研究 赵明1, 董大治2 1 海军装备部,北京 100841 2 中国人民解放军91001部队,北京 100841 摘要:使用区块链技术可以保证数 ...

最新文章

  1. 中采购订单批导的bapi_跟着团子学SAP PS—项目中的物料组件
  2. python的property用法_Python 中@property的用法
  3. AndroidOS体系结构
  4. python 实现装饰器设计模式
  5. 本地缓存防止缓存击穿_防止缓存爆炸的快速提示
  6. 计算机教室应用计划,计算机教室新学期工作计划
  7. linux中查看某个进程打开的文件数
  8. 深度学习:自然语言生成-集束/柱搜索beam search和随机搜索random search
  9. No package ‘libmarco-private‘ found
  10. 谷歌浏览器(Chrome浏览器)最新官方下载(含注意事项)
  11. 沙迪克UTY编程基础操作流程
  12. SSD固态硬盘知识简介
  13. Oracle 索引原理和种类
  14. 八个经验处理开关电源PCBLayout
  15. 关于Word插入图片闪退
  16. 两种曲线下面积AUC(Area Under the ROC Curve):ROC-AUC、PR-AUC(性能度量)
  17. Bundle Adjustment — A Modern Synthesis(一)
  18. RFQ 、IFB、RFP 、RFI的区别是什么
  19. 如何通过UTON WALLET数字钱包创建和使用你的元宇宙身份
  20. ios微信组件跳转_iOSAPP跳转微信小程序

热门文章

  1. 网站优化常见的五个易错点!
  2. js字符串怎么转python对象_js 对象转换为字符串
  3. Android分级部门选择界面(二)
  4. 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...
  5. js中JSON.stringify用于自定义的类
  6. Vue开发跨端应用(一)环境搭建
  7. 使用IBMMQ时的那些事
  8. [HNOI2018]游戏[拓扑排序]
  9. [HTTP]Etag的工作流程
  10. 20145317《网络对抗》shellcode注入Return-to-libc攻击深入