逆向分析使用COM组件对象模型的代码
《惡意代碼分析實戰》第七章實驗7-2的程序使用了COM進行聯網通信。首先把書上第七章關于COM介紹的原文貼出來:
總結一下,就是說惡意程序有時會通過另一個服務程序提供的接口函數實現一些操作,書上給的例子就是調用IE瀏覽器的 IWebBrowser2 接口的 IWebBrowser2Vtbl.Navigate 函數實現訪問WEB地址。
逆向分析實驗7-2,我們會看到如下代碼(已注釋):
HRESULT CoCreateInstance(REFCLSID rclsid,LPUNKNOWN pUnkOuter,DWORD dwClsContext,REFIID riid,LPVOID *ppv );關注 CoCreateInstance 函數的參數,rclsid 是一個全局變量,類型是 GUID,里面的值是這樣的:
這個值可以在注冊表 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0002DF01-0000-0000-C000-000000000046} 找到,里面存儲的字符串值就是IE瀏覽器:
riid 參數表示接口,這個值是 IE 程序指定的,在本例中表示 IWebBrowser2 接口:
調用 CoCreateInstance 后,通過參數 ppv 返回一個函數指針表,在本例中,調用了 +2C 偏移指向的函數,我們可以在結構體視圖添加一個標準結構體 IWebBrowser2Vtbl:
然后應用到匯編中,可以自動識別到 +2C 處是 Navigate 函數:
因此,這個程序的功能之一就是通過IE提供的 IWebBrowser2Vtbl.Navigate 函數訪問了 http://www.malwareanalysisbook.com/ad.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的逆向分析使用COM组件对象模型的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: reflective dll injec
- 下一篇: CreateFileMapping 内存