我给自己定下了其中涉及的COM对象“间谍”的新任务。
即使你不这样做COM,你可能熟悉的API钩子技术,在那里你可以钩住导入函数和调用前原执行自己的代码。 API挂钩是有点复杂,但它很快就会变得混乱(太乱了生产代码IMO)如果你试图钩住COM对象的方法。
所以,此刻,做“我的工作”,我设置CoCreateInstance的一个API钩子和我派出我感兴趣的界面手写代理。现在不是很多的接口,但它不是解决方案的最整洁无论是。
有没有办法做到这一点的更合适的方法,最好不使用API钩子?
在一个又一个音符,这篇文章似乎是伟大的工作http://www.ddj.com/windows/184416546?pgno=5但二进制不工作了(我想这是围绕Win98的时间写的)。 有谁知道它的内部结构,并可以点我到正确的方向,以使之重新工作?
谢谢
我肯定会推荐使用基思·布朗的“通用委托”做低层次的拦截。 由金Grasman提到的ComTrace工具使用它。 它可以让你在一个“壳”,可以做拦截,记录等原始的文章(含代码)描述通用委托的包裹任意COM对象, 这里和这里 。
如果你想窥探任意进程COM对象(即你没有对源),那么你还需要做的代码注入,使用CreateRemoteThread的()或类似的东西。 有一篇文章在这里 ,如果你以前没做过这可能让你开始。
我没有一个明确的答案,但我知道一个人谁可能:)
乔纳斯布隆克的工具都是关于在不同层次的拦截,他ComTrace基于基思·布朗的技术,如果我没有记错,和声音类似于你在做什么,但他解析类型库和头跟踪的接口动态。
我们写了开发者一起游乐场(我主要是做UI),它是基于API钩子,我知道乔纳斯说他要返工ComTrace使用相同的API挂钩库,因为它给了最好的“分辨率”为拦截。
我不知道你想用这个东西,但我建议你看看Jonas的工具和射击他的电子邮件 - 他或许能督促你在正确的方向。