查看正在运行的进程的Windows激活上下文?
问题描述:
是否有任何方法可以查看正在运行的Windows进程的激活上下文?查看正在运行的进程的Windows激活上下文?
理想情况下,当我说“视图”时,我的意思是以人类可读的方式检查它,查看/确认已加载的DLL等。
我的想象是,某种调试器可能会附加到正在运行的进程,然后显示该信息。但任何类型的工具都可能有用 - 调试器,日志文件,甚至使用激活上下文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注入给定进程。