2
我一直在玩最近的內存轉儲,偶然發現了一些我並沒有完全理解的東西。通過內部/外部進程生成的不同內存轉儲
如果我有一個進程並通過使用VirtualQueryEx & ReadProcessMemory來獲取數據並將其轉儲到文件中,則轉儲它的內存內容一切正常。與此同時,我嘗試了通過在進程內部執行VirtualQuery並僅轉儲它返回的指針的內容來做同樣的事情。 我能夠通過代理我正在測試的進程的某個DLL來完成此操作。 現在,問題是這兩個內存轉儲是不同的(從進程內部創建的轉儲缺失的區域) 有人可以告訴我爲什麼會發生這種情況嗎? Windows XP SP3 + Visual Studio 2008 非常感謝。
我試圖轉儲一切除了代碼;是的,我知道這個過程現在包括翻斗車代碼,我已經考慮到了這一點;內部和外部轉儲同步,內部區域丟失 – 2011-05-06 19:42:26
您可以嘗試在轉儲之前用VirtualLock()鎖定內存嗎?你能否獲得關於錯過哪些頁面的信息? – 2011-05-06 19:51:44
我的假設是線程棧頁面丟失,但我真的不知道;此外,我不會做VirtualLock(),因爲這是一款遊戲,它可能會產生...後果;在它內部運行我掛鉤了一個DLL函數;這就像我不能'看到'從鉤住內線程的一切。 – 2011-05-06 20:08:04