gpt4 book ai didi

c++ - 当给定 PE 基地址作为参数时,为什么 ZwUnmapViewOfSection() 取消映射整个进程的内存?

转载 作者:太空宇宙 更新时间:2023-11-04 12:42:45 24 4
gpt4 key购买 nike

在创建挂起进程并取消映射程序内存的代码中,我经常看到如下代码:

ZwUnmapViewOfSection(remoteProcessInfo->hProcess, static_cast<PVOID>(remoteImageBaseAddress))

根据 MSDN 文档,ZwUnmapViewOfSection 取消映射包含 remoteImageBaseAddress 的单个部分。

但是,PE 二进制文件有多个部分(.text.data 等),所以这个调用不会只取消映射其中的一个部分吗?

我错过了什么?我也不明白为什么 remoteImageBaseAddress (基地址)作为参数给出,因为这个地址不属于 .text 部分(可执行代码)。

最佳答案

我认为您对 PE 文件部分和 Windows 的内存管理 Section 类型对象感到困惑。

PE 文件中的一个部分只是一段原始数据,通常按其属性分类。

在 Windows 中,section 对象是一个内部内存管理对象,用于将磁盘上的物理文件映射到进程的虚拟地址空间。因此,当 ZwUnmapViewOfSection 传递映射文件(节)的地址时,它会从内核空间和进程的地址空间中删除节对象 - 即映射文件。它不会改变实际 PE 文件的部分。

我希望你现在明白这一点。

关于c++ - 当给定 PE 基地址作为参数时,为什么 ZwUnmapViewOfSection() 取消映射整个进程的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53344161/

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