【发布时间】:2017-08-08 13:18:05
【问题描述】:
有什么方法可以查看正在运行的 Windows 进程的激活上下文?
理想情况下,当我说“视图”时,我是指以人类可读的方式检查它,例如查看/确认已加载哪些 DLL,等等。
我的想象是某种调试器可能会附加到正在运行的进程,然后显示该信息。但任何类型的工具都可能有用 - 调试器、日志文件,甚至使用激活上下文 API 来检查事物等等。
【问题讨论】:
标签: winsxs activation-context-api
有什么方法可以查看正在运行的 Windows 进程的激活上下文?
理想情况下,当我说“视图”时,我是指以人类可读的方式检查它,例如查看/确认已加载哪些 DLL,等等。
我的想象是某种调试器可能会附加到正在运行的进程,然后显示该信息。但任何类型的工具都可能有用 - 调试器、日志文件,甚至使用激活上下文 API 来检查事物等等。
【问题讨论】:
标签: winsxs activation-context-api
检索激活上下文详细信息的基本方法之一是使用QueryActCtxW() API。这个 API 可以用来查询一堆细节。 here 提供了一个很好的示例。
在示例代码中,请注意下面一行。
// Request the first file in the root assembly
QueryIndex.ulAssemblyIndex = 1;
QueryActCtxW() API 可以通过增加ulAssemblyIndex 的值来重复调用,只要返回成功即可。每个成功的调用都将返回由ulAssemblyIndex 表示的程序集的请求详细信息。
当从进程中调用QueryActCtxW() 时,上述方法将起作用。
现在,如果您想获取另一个进程的详细信息,一个想法是将激活上下文检索逻辑包装在 DLL 中。 DLL 可以将详细信息转储到磁盘文件或通过管道将其传送到查看器。然后通过DLL Injection 等技术或利用CreateRemoteThread() API 将这个DLL 注入给定进程。
【讨论】: