首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

XP 使用者模式記憶體空間剖析(八):MEM_MAPPED 區塊與區段物件

     編輯:關於C++

MEM_MAPPED 區塊來源追蹤

移除映像檔、堆疊、堆積後,大量 MEM_MAPPED 區塊殘留。MSDN 定義:記憶體頁面對應至某個區段的視圖。

嘗試 GetMappedFileName 失敗

部份區塊可取得對應檔案名稱,但大多數呼叫失敗,錯誤碼 0x3EE:「檔案所在磁碟區已被外部改變」。嘗試 UnmapViewOfFile 解除對應導致程式當機,推測這些區塊為關鍵系統映射(如共用 DLL 區段、分頁檔映射等),不可隨意解除。

列舉進程控制碼查詢區段物件

使用 ZwQuerySystemInformation(SystemHandleInformation) 列舉進程開啟的控制碼,搭配 NtQueryObject(ObjectAllInformation) 取得物件名稱。發現大量 Section 物件(如 \KnownDlls\kernel32.dll、\BaseNamedObjects\...、\Session\... 等)。

區段物件與記憶體區塊對應關係

受限於技術深度,無法直接建立 Section 物件與具體 MEM_MAPPED 區塊的一一對應,暫作記號待後續研究。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved