有什么方法可以查看正在运行的 Windows 进程的激活上下文?
理想情况下,当我说“查看”时,我的意思是以人类可读的方式检查它,例如查看/确认已加载哪些 DLL 等。
我的想象是某种调试器可能会附加到正在运行的进程,然后显示该信息。但任何类型的工具都可能有用 - 调试器、日志文件,甚至使用激活上下文 API 来检查事物等。
有什么方法可以查看正在运行的 Windows 进程的激活上下文?
理想情况下,当我说“查看”时,我的意思是以人类可读的方式检查它,例如查看/确认已加载哪些 DLL 等。
我的想象是某种调试器可能会附加到正在运行的进程,然后显示该信息。但任何类型的工具都可能有用 - 调试器、日志文件,甚至使用激活上下文 API 来检查事物等。
检索激活上下文详细信息的基本方法之一是使用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 注入给定进程。