是否有任何方法查看正在运行的Windows进程的激活上下文?
理想情况下,当我说"查看"我的意思是以人类可读的方式检查它,例如查看/确认已加载的DLL等等。
我的想象是,某种调试器可能附加到正在运行的进程,然后显示该信息。但是任何类型的工具都可能有用 - 调试器,日志文件,甚至使用激活上下文API来检查事物等。
答案 0 :(得分:1)
检索激活上下文详细信息的一种基本方法是使用QueryActCtxW()
API。此API可用于查询大量详细信息。有一个很好的样本here。
在示例代码中,请注意以下行。
// Request the first file in the root assembly
QueryIndex.ulAssemblyIndex = 1;
QueryActCtxW()
只要返回成功,就可以通过递增ulAssemblyIndex
的值来重复调用API。每次成功的调用都将返回ulAssemblyIndex
所代表的汇编请求的详细信息。
从进程内调用QueryActCtxW()
时,上面的内容将起作用。
现在,如果您想获得另一个进程的详细信息,一个想法是将激活上下文检索逻辑包装在DLL中。 DLL可以将详细信息转储到磁盘文件或将其传递给查看器。然后通过诸如DLL Injection之类的技术或使用CreateRemoteThread() API将此DLL注入给定进程。