上接<反流技術之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層級的。
因為我希望大家能寫些更牛的反流軟體以自由軟體的形式,供中國普通網民使用。