堆损坏对 Windows 2012 r2 服务器的影响
Heap Corruption's effect on a Windows 2012 r2 server
如果在Windows 2012 R2服务器上运行的每个进程都有自己的堆,那么是否不可能让一个进程损坏另一个进程'heap?我认为这是可能的,因为所有堆都存储在"全局"地址空间中,但是当一个过程试图从内存中写入或从内存中读取其地址空间时,就会发生AV ...因此,这将阻止该过程的堆损坏拥有地址空间?
您需要阅读虚拟内存的工作方式。没有无所不包的地址空间。
有物理公羊地址和物理磁盘地址,这些地址不会因过程而异。但是用户模式代码永远不会直接使用这些代码。
相反,内存管理单元提供了从虚拟地址到物理地址的映射。由于页面表是特定于过程的,因此此映射是每个过程唯一的。只有环0(内核模式(代码可以绕过映射步骤,这是在硬件中执行的。对于用户流程,如果没有导致特定物理地址的映射,则根本无法从该上下文中访问它,因为没有办法使用虚拟地址来命名该物理位置。而且没有映射会导致页面表本身。
这是内存管理单元与其小兄弟(内存保护单元(之间的区别。使用内存保护单元的体系结构确实具有单个全局地址方案,硬件强制许可位只能通过特权代码进行修改。
您问的关于
的事情一个过程试图从[sic]写作或从内存中读取它是[sic]地址空间
只是不存在。这就像问我的车电话是什么。我的汽车是通过VIN和车牌识别的,但是这些都不会让您通过电话系统与它进行交谈。
访问违规行为(有时也称为分割故障(发生在一个过程尝试写入,从其地址空间的未启动部分或已明确设置以捕获访问尝试的页面(用于堆栈扩展(时,就会发生。也许,或抄写的复制(。根据一个过程,所有内存访问均在其地址空间内解释。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从服务器传输到客户端的消息不会出现
- 为什么擦除方法会影响结束方法
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- OpenSSL TLS服务器-使用客户端证书白名单
- 内联如何影响模块接口中的成员函数
- 我正在开发服务器,ip作为参数传递不起作用
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 提升 Asio TCP 服务器 处理多个客户端
- 在容量内调整矢量大小时的性能影响
- 如何在 Minecraft 服务器上执行命令
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 调试编译的服务器在数据库打开时崩溃
- C++套接字客户端到 Python 服务器未创建连接
- 堆损坏对 Windows 2012 r2 服务器的影响