图解用工具对BHO做初步研究
一 BHO和瀏覽器劫持
BHO
Browser Helper Objects (也被稱為 BHOs) 是com組件,扮演著ie插件的角色。BHOs可以在某種程度上定制IE,如:用戶交互的修改,網頁過濾的及下載管理。
BHO(Browser Help Objects),是實現了特定接口的COM組件。開發好的BHO插件在注冊表特定的位置注冊好后,每當微軟的瀏覽器啟動,BHO實例就會被創建。在瀏覽器工作的工程中,BHO會接收到很多事件,比如瀏覽器瀏覽新的地址、前進或后退、生成新的窗口、瀏覽器退出等等;BHO可以在這些事件的響應中實現與瀏覽器的交互。
瀏覽器劫持
BHO的出現幫助程序員更好的打造個性化瀏覽器或者為自己的程序實現了方便簡潔的交互功能,可以說,如果沒有BHO接口的誕生,我們今天就不能用一些工具實現個性化IE的功能了。從某一方面來看,BHO的確是各種繽紛網絡互動功能的幕后功臣,但是一切事物都是有兩面性的,這個恒古不變的真理同樣對BHO有效,于是就有了今天讓安全界頭痛的“瀏覽器劫持”的攻擊手段誕生。
看看前面我提到的BHO接口特性,你想到了什么?BHO可以獲知和實現瀏覽器的大部分事件和功能,也就是說,它可以利用少量的代碼控制瀏覽器行為。程序員可以設計出一個BHO按鈕以實現用戶點擊時通知瀏覽器跳轉到某個頁面完成交互功能,當然就可以進一步寫出控制瀏覽器跳轉到他想讓用戶去的頁面,這就是最初的“瀏覽器劫持”的成因:BHO劫持。
IE如何加載BHO
當BHO將被IE加載的時候,它調用一個叫做CoCreateInstance的COM函數,傳給它我們BHO的類ID和叫做IObjectWithSite的接口ID。
BHOs被要求實現IObjectWithSite接口,是IE用來和BHO交互的。
二 查找BHO模塊
通過前面介紹,可知,BHO是一個dll,并且實現了相應的COM接口。下面來找下瀏覽器進程中的DLL,看有無BHO。因為現在的瀏覽器都有擴展功能,也許會有BHO。看360極速瀏覽器的所引入的模塊;
看下這個afe.dll的介紹,也許是BHO;
用dll查看器看下,它只實現了兩個函數,不是BHO;
再找另一個DLL查看工具看下,也許前一個看的不準;
這個工具查看模塊導出的函數要麻煩一些;
結果是一樣的,afe.dll僅導出2個函數,不是BHO;
再看這個dll,介紹說是“插件”;那么可能是BHO;
用dll查看器查看,導出3個函數,非BHO;
看下360極速瀏覽器導入的這堆dll,看上去似乎都不是BHO;good,很好;
三 在注冊表中查找BHO
根據相關資料有, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects可以找到所有的BHO
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\
中可以找到BHO對應的注冊項
其中的InprocServer32的默認值為BHO所對應的dll文件.
打開我電腦的上述鍵,根本沒有上述第一個鍵;
再看CLSID里,一堆,根本不知道誰是誰;
用搜索功能搜索注冊表;
原來64位系統該鍵在另外的位置;
搜到3個BHO,如下;看上去都是微軟自帶的;
看下360極速的模塊,沒有導入上面3個dll;看來360極速瀏覽器是沒有使用BHO插件的了,good。
結束此次研究。
總結
以上是生活随笔為你收集整理的图解用工具对BHO做初步研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓指令和命令学习总结
- 下一篇: 图解Win7下安装Oracle 12c