2

有什么方法可以查看正在运行的 Windows 进程的激活上下文

理想情况下,当我说“查看”时,我的意思是以人类可读的方式检查它,例如查看/确认已加载哪些 DLL 等。

我的想象是某种调试器可能会附加到正在运行的进程,然后显示该信息。但任何类型的工具都可能有用 - 调试器、日志文件,甚至使用激活上下文 API 来检查事物等。

4

1 回答 1

1

检索激活上下文详细信息的基本方法之一是使用QueryActCtxW()API。这个 API 可以用来查询一堆细节。这里有一个很好的示例。

在示例代码中,请注意以下行。

// Request the first file in the root assembly
QueryIndex.ulAssemblyIndex = 1;

QueryActCtxW()ulAssemblyIndex只要返回成功,API 就可以通过递增 的值来重复调用。每个成功的调用都将返回请求的程序集详细信息,由ulAssemblyIndex.

QueryActCtxW()当从进程中调用时,上面将起作用。

现在,如果您想获取另一个进程的详细信息,一个想法是将激活上下文检索逻辑包装在 DLL 中。DLL 可以将详细信息转储到磁盘文件或通过管道将其传送到查看器。然后通过DLL 注入等技术或利用CreateRemoteThread() API将此 DLL 注入给定进程。

于 2017-11-08T07:15:35.280 回答