Windows 监视COM对象

Windows 监视COM对象,windows,com,hook,Windows,Com,Hook,我给自己设置了一项新任务,其中包括“监视”COM对象 即使您不使用COM,也可能熟悉API挂钩技术,可以在调用原始函数之前挂钩到导入的函数并执行自己的代码。API挂接有点复杂,但如果您尝试挂接COM对象方法,它很快就会变得混乱(对于生产代码IMO来说太混乱) 所以,现在,为了完成“我的工作”,我为CoCreateInstance设置了一个API钩子,并为我感兴趣的接口分派手写的代理。这不是很多接口,但也不是最整洁的解决方案 有没有一种方法可以更整洁地做到这一点,最好不使用API挂钩 另一方面,这

我给自己设置了一项新任务,其中包括“监视”COM对象

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

所以,现在,为了完成“我的工作”,我为CoCreateInstance设置了一个API钩子,并为我感兴趣的接口分派手写的代理。这不是很多接口,但也不是最整洁的解决方案

有没有一种方法可以更整洁地做到这一点,最好不使用API挂钩

另一方面,这篇文章似乎是很好的作品,但是二进制文件已经不起作用了(我想它是在Win98时代写的)。有谁知道它的内部结构,并能为我指出正确的方向,使它再次发挥作用


谢谢

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

工具都是关于不同级别的拦截,如果我没记错的话,他的ComTrace是基于Keith Brown的技术的,听起来与您正在做的类似,只是他解析类型库和头以动态跟踪接口

我们一起编写了开发人员游乐场(我主要编写UI),它基于API挂钩,我知道Jonas说他想重新编写ComTrace以使用相同的API挂钩库,因为它为拦截提供了最佳的“解决方案”


我不知道你想用它做什么,但我建议你检查一下乔纳斯的工具,给他发一封电子邮件——他也许能给你指明正确的方向。

我绝对推荐使用基思·布朗的“通用授权器”来进行低级拦截。Kim Grasman提到的ComTrace工具使用它。它允许您将任意com对象包装在一个“shell”中,该shell可以执行拦截、日志记录等操作。描述universal delegator的原始文章(含代码)包括和

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