gpt4 book ai didi

delphi - 如何从外部进程获取进程环境 block (PEB)?

转载 作者:行者123 更新时间:2023-12-03 15:07:58 32 4
gpt4 key购买 nike

我想从“notepad.exe”进程获取PEB。有人知道怎么做吗?

我尝试了 GetModuleHandle API,但它没有返回有效的指针(每次都返回零),因为我必须是该模块的调用者进程。

因此,我想知道如何让它与 EnumProcessModulesCreateToolhelp32Snapshot 一起使用。

最佳答案

Matt Pietrek 在 1994 Under the Hood column 中描述了如何做到这一点。这是关于如何获取另一个进程的环境变量,其中第一步是获取指向 PEB 的指针。他说,为此,请调用 NtQueryInformationProcess 。它填充的PROCESS_BASIC_INFORMATION结构包含PEB结构的基地址。 (您需要使用 ReadProcessMemory 来读取它,因为该地址将位于外部进程地址空间的上下文中,而不是您的地址空间。)

要调用NtQueryInformationProcess,您需要该进程的句柄。如果您自己启动了该进程(通过调用CreateProcess),那么您已经有了一个句柄。否则,您需要查找进程 ID,然后调用 OpenProcess。要获取进程 ID,请使用 EnumProcessesProcess32First/Process32Next 搜索所需的进程。 (我更喜欢后者,因为它可以用更少的工作提供更多信息。)

关于delphi - 如何从外部进程获取进程环境 block (PEB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5454667/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com