繁体   English   中英

拦截COM dllhost.exe调用

[英]Intercept COM dllhost.exe invocation

我正在尝试使用Intel Pin来检测COM DLL。 不幸的是,Intel Pin是为检测独立进程而不是DLL而设计的。

所以我的问题是-是否有可能影响COM用于启动Inproc服务器主机(dllhost.exe)的命令行,以便我可以将dllhost.exe作为参数调用pin.exe? 还是将dllhost.exe的调用硬编码到Windows中,这意味着我的想法是徒劳的?

DLLHost.exe是DLL代理的一个示例,它使您可以在单独的可执行文件中实例化DLL COM服务器。 您可以使用DllSurrogateExecutable注册表项指定要使用的任意可执行文件,并且可以实现自己的直接使用Pin的DLL替代可执行代码

当然,还有一个单独的问题是如何创建COM对象。 仅当该类针对某个AppID注册时才使用DLL代理,该AppID指定它可以使用DLL代理, 并且 COM对象的创建者向CoCreateInstance等指定CLSCTX_LOCAL_SERVER。 在这种情况下,您可能需要修改调用方以更改上下文。

为了确定您的类在哪个AppID下注册,可以使用一些工具,例如OleView,但是在注册表编辑器中并不难。 如果获得CLSID GUID,请在HKEY_CLASSES_ROOT\\CLSID\\GUID下进行搜索。 在此之下,您可能会找到一个AppID值。 这是一个GUID,它指向HKEY_CLASSES_ROOT\\AppID\\GUID2 ,其中包含它是否已注册为DLL代理,以及可以在其中放置DllSurrogateExecutable密钥的GUID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM