【问题标题】:How to Query process names under low integrity process?低完整性进程下如何查询进程名?
【发布时间】:2011-06-06 05:06:07
【问题描述】:

我正在编写 BHO,我想执行一个外部进程。 如果操作系统是 vista 或更高版本,则用户可能处于保护模式,使我的 BHO 在低完整性进程下运行。

我尝试执行的外部进程列在 IE 的提升策略列表中,使其在正常完整性下运行。

我想检查进程当前是否正在运行,如果不是,则只创建一次。 问题是我无法查询比我的完整性更高的进程 当我使用: 处理 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwPID); 我只能打开完整性低的进程。

还有其他方法可以从低完整性进程中查询进程名称吗?

谢谢!

【问题讨论】:

  • 嗯,当你可以调用 ReadProcessMemory() 时你还能做什么......
  • 我不会,但我需要它用于 EnumProcessModules 和 GetModuleBaseName。是否有另一种方法来获取没有 VM_READ 属性的进程名称?顺便说一句,我可以使用互斥锁或其他东西来检查进程是否存在,但现在我只是好奇。我认为还有另一种方法
  • 仅供参考似乎即使在低完整性下运行时,.Net 的 Process.GetProcesses() 也会给出列表。我不确定它在幕后做了什么,但你可以调查一下。
  • 在我看来,基于 .net 代码,您可以使用 Kernel32 中的 NtQuerySystemInformation() 来检索它,在我的测试中,它似乎也可以在低完整性进程中工作。

标签: c++ windows security internet-explorer


【解决方案1】:

嗯, CreateToolhelp32Snapshot 解决了它,它映射每个进程,无论它的完整性如何。 PROCESSENTRY32 结构有可执行文件,这就是我所需要的。

【讨论】:

  • 我知道这已经过时了,但作为对其他所有人的提醒,我认为这可能是一个最近关闭的漏洞。我注意到,在使用 CreateToolhelp32Snapshot 时,处于保护模式的 Windows 10 上的 IE 11 只会显示具有相同低完整性的进程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 2010-12-28
  • 2011-11-07
  • 2013-09-10
相关资源
最近更新 更多