我有一个非常密集的 Office 插件。
除了标准的 Office 可扩展性点之外,我还挂钩了许多 Win32 API,例如 kernel32!CreateFileW、ole32!StgCreateStorageEx 等(我正在使用 IAT 挂钩)。
但是,我无法解决的一个问题(尽管不知何故无法解决)是从 hwnd 获得指向 Document 接口的指针。
但是,我注意到 Office(在所有程序、所有版本中)在 GWL_USERDATA 的 Windows 存储中放置了一个指针(可能指向内部对象)。
我怎么知道这是一个指向对象的指针?因为它的第一个 DWORD 是指向看起来像 v-table 的指针(一堆地址,都以'push ebp,move ebp,esp'开头)。此外,这个 v-table 的前 3 个方法似乎具有 IUnknown 逻辑(第一个方法调用 MsoHrSimpleQueryInterface2,第二个方法执行“inc”并返回递增的值,第三个方法似乎执行通常的 Release 逻辑)。
然而,我无法取得更大的进步。我正在尝试对这个对象进行各种 QueryInterface 调用,并且我正在尝试阅读其他方法——但运气不佳。
我想知道是否有人曾在这条道路上取得过更好的成绩?