2009-10-01 57 views
6

我已經爲自己設置了一個新任務,它涉及到「偵察」COM對象。在COM對象上執行偵測

即使你不這樣做COM,你可能熟悉的API鉤子技術,在那裏你可以鉤住導入函數和調用前原執行自己的代碼。 API掛鉤有點複雜,但如果試圖掛接到COM對象方法上,它會很快變得混亂(生產代碼IMO太混亂)。

因此,爲了做「我的工作」,我爲CoCreateInstance設置了一個API鉤子,併爲我感興趣的接口分派手寫代理。現在,這不是很多接口,但它不是也是最好的解決方案。

有沒有辦法做到這一點的更合適的方法,最好不使用API​​鉤子?

在另一個說明,這篇文章似乎是偉大的工作http://www.ddj.com/windows/184416546?pgno=5,但二進制文件不再工作了(我猜它是圍繞Win98時間寫的)。有沒有人知道它的內部,並可以指向正確的方向,使其再次工作?

感謝

回答

2

我肯定會推薦使用基思·布朗的「通用委託」做低層次的攔截。 Kim Grasman提到的ComTrace工具使用它。它可以讓你在一個「殼」,可以做攔截,記錄等原創文章(有代碼)包裝的任意COM對象描述通用委託是herehere

如果你想窺探任意進程中的com對象(你沒有源代碼),那麼你還需要使用CreateRemoteThread()或類似的方法進行代碼注入。有一篇文章here可能會讓你開始如果你以前沒有做過。

3

我沒有一個明確的答案,但我知道誰可能:)

Jonas Blunck's工具都在不同層面對攔截,他ComTrace基於基思·布朗的技術一個傢伙,如果我記得正確,並且聽起來與你正在做的類似,除了他分析類型庫和頭以動態跟蹤接口。

我們一起編寫了開發者遊樂場(我主要做了UI),它基於API掛鉤,我知道Jonas說他想重寫ComTrace以使用相同的API掛鉤庫,因爲它爲截取提供了最好的「分辨率」 。

我不知道你想用這個東西,但我建議你看看Jonas的工具和射擊他的電子郵件 - 他或許能督促你在正確的方向。