2012-02-01 167 views

回答

1

簡短的回答是否定的 - 沒有安全,記錄從內核模式操作頁面保護位的方式。這些位由內存管理器擁有。

也就是說,由於以這種方式分配的內存沒有設置NX位,所以沒有任何東西阻止您從通過此API分配的內存中執行代碼。

編輯:我站在更正 - 我不知道上面的亞歷克斯的答案中提到的API。你每天學習新的東西!

+0

錯誤地,我使用通過MmAllocateContiguousMemory分配的頁面之一作爲代碼頁。當我沒有看到藍屏時,我感到很沮喪。奇怪的是,Windows可以使用執行權限來分配固定內存。 @亞歷克斯:感謝MDL。但是,我想知道爲什麼Windows允許從分配的頁面執行。這是因爲頁面是否在頁表中預先分配,NX位未設置。 – 2012-02-02 17:54:09

4

通過MDL分配內存,然後調用MmProtectMdlSystemAddress()來更改頁面保護。

找到here

+0

Alex:你知道是否有一個例程來檢查從非分頁池分配的頁面的權限。 – 2012-02-02 18:12:52

+0

我不知道。 – 2012-02-02 18:54:03