日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

COM组件的逆向

發(fā)布時(shí)間:2023/12/13 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 COM组件的逆向 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

com組件可能屬于相對冷門的東西,但是通過com卻可以實(shí)現(xiàn)很多API可以實(shí)現(xiàn)的功能

。當(dāng)病毒使用com來實(shí)現(xiàn)某些惡意功能時(shí),由于com與平常API實(shí)現(xiàn)的方式不相同,可能會出現(xiàn)在沙箱中監(jiān)控不到惡意行為的情況。而如果沒有接觸過com,在逆向分析時(shí)也會存在不少困惑。

二、正文

com組件初始化部分

在使用com之前需要進(jìn)行初始化工作。無論是正常com編程或是惡意軟件中都需要調(diào)用CoInitializeEx進(jìn)行初始化工作。

COM的對象和接口

初始化了com組件后,使用函數(shù)CoCreateInstance來調(diào)用對象和接口。這里有幾個(gè)比較重要的參數(shù),其中第一個(gè)參數(shù)使用CLSID指定了對象,第四個(gè)參數(shù)使用IID指定了接口,最后一個(gè)參數(shù)為獲得的接口指針。CLSID和IID都是標(biāo)識COM的GUID,所以通過查找對應(yīng)的GUID就可以找到使用了什么對象和接口。

GUID的結(jié)構(gòu)體如圖,格式為xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。IDA識別出clsid則直接顯示,如果沒有識別則需要自己添加和關(guān)聯(lián)結(jié)構(gòu)體。

如果clsid是動(dòng)態(tài)解密生成的,則需要自己在調(diào)試器的數(shù)據(jù)窗口中查看。如圖下一個(gè)例子,數(shù)據(jù)窗口中為小端序,根據(jù)前面結(jié)構(gòu)體可以得出下面的clsid為4590F811-1D3A-11D0-891F-00AA004B2E24

根據(jù)clsid值和IID值查找對應(yīng)的對象和接口

獲取到clsid或IID后,就要找到對應(yīng)的對象和接口,這里有3種方法,在多數(shù)情況下,需要同時(shí)使用這幾種方法才可以找到對應(yīng)的對象和接口。

1、注冊表項(xiàng)查找:其中clsid在注冊表HKEY_CLASSES_ROOTCLSID下,IID在HKEY_CLASSES_ROOTInterface或HKLMSoftwareClassesInterface下。

2.OleView:OleView是讀取注冊表里的clsid和iid相關(guān)內(nèi)容并顯示出來,這里查找和查看相對方便一點(diǎn),不過需要系統(tǒng)配有.net環(huán)境。下載地址:https://github.com/tyranid/oleviewdotnet。

3.谷歌:如果前面都找不到就只能Google查找,直接輸入GUID來查找對應(yīng)的對象或接口

接口的成員函數(shù)

前面說了這么多,最主要的還是確定使用了那個(gè)接口,然后根據(jù)接口來確定調(diào)用的成員函數(shù),找到成員函數(shù)后可以查找對應(yīng)的文檔來查看具體功能的實(shí)現(xiàn)。如果在用OD分析com組件時(shí),會發(fā)現(xiàn)看不到調(diào)用了那個(gè)函數(shù)的情況,這是由于這里call的只是一個(gè)虛函數(shù)表的地址,所以在分析com組件時(shí)一般需要ida進(jìn)行輔助分析。

由于我們前面確定了使用的接口,所以可以通過導(dǎo)入接口成員函數(shù)的結(jié)構(gòu)體來識別出調(diào)用的函數(shù),這里測試?yán)又械慕涌跒镮WbemLocator,所以首先在structure窗口中獲取這個(gè)接口的結(jié)構(gòu)體。其中Vtbl是虛函數(shù)表的意思,這個(gè)就是我們的要導(dǎo)入的結(jié)構(gòu)體

導(dǎo)入結(jié)構(gòu)體后就可以把接口指針和結(jié)構(gòu)體關(guān)聯(lián)起來,接口指針是CoCreateInstance的第五個(gè)參數(shù),所以關(guān)聯(lián)起來后就可以看到實(shí)際調(diào)用的函數(shù)。

三、參考文章

https://www.4hou.com/reverse/15870.html

總結(jié)

以上是生活随笔為你收集整理的COM组件的逆向的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。