我为自己设置了一项新任务,涉及“窥探”COM对象。
即使你不做COM,你也可能熟悉API钩子技术,你可以在调用原始函数之前挂钩导入的函数并执行你自己的代码。 API挂钩有点复杂但如果你试图挂钩到COM对象方法,它会很快变得混乱(对于生产代码IMO而言太乱)。
所以,目前,要做“我的工作”,我为CoCreateInstance设置了一个API挂钩,我为我感兴趣的接口发送手写代理。现在这不是很多接口,但它不是最好的解决方案。
有没有办法以更简洁的方式执行此操作,最好不使用API挂钩?
另一方面,这篇文章看起来很棒http://www.ddj.com/windows/184416546?pgno=5,但二进制文件不再起作用了(我猜它是围绕Win98编写的)。有没有人知道它的内部结构并能指出我使它再次起作用的正确方向?
由于
答案 0 :(得分:3)
我没有确定的答案,但我知道一个人可能:)
Jonas Blunck's工具都是关于不同级别的拦截,他的ComTrace基于Keith Brown的技术,如果我没记错的话,听起来和你正在做的一样,除了他解析类型库和头文件以保持动态跟踪接口。
我们一起编写了开发者游乐场(我主要是用户界面),它基于API挂钩,我知道Jonas说他想重做ComTrace以使用相同的API挂钩库,因为它为拦截提供了最好的“解决方案”。
我不知道你想用它做什么,但我建议你查看Jonas的工具并给他发一封电子邮件 - 他可能会朝着正确的方向刺激你。
答案 1 :(得分:3)