间谍COM对象

时间:2009-10-01 16:59:14

标签: windows com hook

我为自己设置了一项新任务,涉及“窥探”COM对象。

即使你不做COM,你也可能熟悉API钩子技术,你可以在调用原始函数之前挂钩导入的函数并执行你自己的代码。 API挂钩有点复杂但如果你试图挂钩到COM对象方法,它会很快变得混乱(对于生产代码IMO而言太乱)。

所以,目前,要做“我的工作”,我为CoCreateInstance设置了一个API挂钩,我为我感兴趣的接口发送手写代理。现在这不是很多接口,但它不是最好的解决方案。

有没有办法以更简洁的方式执行此操作,最好不使用API​​挂钩?

另一方面,这篇文章看起来很棒http://www.ddj.com/windows/184416546?pgno=5,但二进制文件不再起作用了(我猜它是围绕Win98编写的)。有没有人知道它的内部结构并能指出我使它再次起作用的正确方向?

由于

2 个答案:

答案 0 :(得分:3)

我没有确定的答案,但我知道一个人可能:)

Jonas Blunck's工具都是关于不同级别的拦截,他的ComTrace基于Keith Brown的技术,如果我没记错的话,听起来和你正在做的一样,除了他解析类型库和头文件以保持动态跟踪接口。

我们一起编写了开发者游乐场(我主要是用户界面),它基于API挂钩,我知道Jonas说他想重做ComTrace以使用相同的API挂钩库,因为它为拦截提供了最好的“解决方案”。

我不知道你想用它做什么,但我建议你查看Jonas的工具并给他发一封电子邮件 - 他可能会朝着正确的方向刺激你。

答案 1 :(得分:3)

我绝对建议使用Keith Brown的'Universal Delegator'进行低级拦截。 Kim Grasman提到的ComTrace工具使用它。它允许您将一个任意com对象包装在一个可以进行拦截,记录等的“shell”中。描述通用委托者的原始文章(带代码)是herehere

如果你想监视任意进程中的com对象(你没有源代码),那么你还需要使用CreateRemoteThread()或类似方法进行代码注入。有一篇文章here可能会让你开始,如果你以前没有这样做过。