加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何从extern进程获取进程环境块(PEB)?

发布时间:2020-12-15 03:52:01 所属栏目:大数据 来源:网络整理
导读:所以…我需要从“notepad.exe”进程中获取peb,有人知道如何制作它吗? 我正在尝试使用“GetModuleHandle”API,但是…不会返回指针(每次都返回零)因为我必须是该模块的调用者进程. 出于这个原因,我想知道如何使用“EnumProcessModules”或“CreateToolhelp32S
所以…我需要从“notepad.exe”进程中获取peb,有人知道如何制作它吗?

我正在尝试使用“GetModuleHandle”API,但是…不会返回指针(每次都返回零)因为我必须是该模块的调用者进程.

出于这个原因,我想知道如何使用“EnumProcessModules”或“CreateToolhelp32Snapshot”来获取它.

如果有人知道请告诉我怎么样,提前谢谢!

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读