是否可以通过x86汇编语言调用COM对象?如果是这样,怎么样?
我为什么要这样做?假设我有两个我没有源代码的程序 - 我所有的都是二进制文件.其中一个实现了COM接口,另一个没有.我想在第一个程序中注入代码,使用这个COM接口调用第二个程序,这需要我使用x86程序集.
当然这是可能的 - 实际上这就是C/C++编译器所做的.
但为什么以上帝的名义你想要这样做?如果它是为了教育价值,那么肯定在直接C中手工完成COM的东西就可以了.
鉴于更新的问题,我建议您在DLL中编写COM内容并将该DLL注入要修补的程序,然后将简单的x86代码修补到程序中以调用您的DLL来完成繁重的任务.我不记得将DLL注入进程的地址空间的技术,但至少有一对.AppInit注册表设置(或类似的东西)是一个.
但是,我认为将代码注入流程的大多数途径都被认为是安全漏洞(并且经常被恶意软件使用),所以我怀疑微软可能已经从最近的服务包中删除了很多(或全部)或OS版本.