前一段時間,我在C#中創建了一個內存掃描器,它可以讀取進程的內存並查找特定值(例如每次出現整數42的位置)。從那以後,我重新審視了這個項目,並試圖將其設計爲64位系統。我遇到的問題是64位進程被授予高達8TB的虛擬內存(與32位系統上的低至2-4GB相比)!至少對於我的代碼來說,在任何合理的時間範圍內掃描0-8TB範圍內的每個地址都是不可能的。以64位掃描內存?
我試着在Process.MainModule.BaseAddress開始我的掃描,但我不知道停止閱讀的地方,我肯定缺少重要的值。如何縮小範圍以便我可以掃描過程實際使用的範圍?
您需要獲取進程的內存映射。搜索「進程內存映射」,這應該讓你開始。 –
我搜索了進程內存映射和類似的術語,但我能找到的所有解釋是如何分頁和虛擬內存的工作。這是有用的信息,但沒有真正指出如何實現創建或如何查看外部進程的內存映射。然而,這確實使我研究了探索流程虛擬內存的其他方法。 – user1881066
掃描調用'VirtualQueryEx'的地址空間是如何構建一個進程內存映射。 –