[原創/討論][windows核心編程一外傳]關於訪問虛擬地址0的方法。
上一篇觀賞地址 :
https://community.csdn.net/Expert/topic/5124/5124747.xml?temp=.2832453
當然係統保證不讓訪問地址0出於一種保護的目的,是防止未初始化的指針讀取數據。我說的訪問地址0隻是出於一種純實現的目的,也不提倡大家這樣做。說白了
隻是好玩罷了。
// 寫 0 地址的內容
xor edx,edx
mov [edx],eax
這是為什麼呢?是不是windows在內核做了什麼判斷?其實這是愚蠢和低效的。
windows隻是借助於PM的一個自然屬性---頁表屬性,通過將0xc000_0000置null
來完成。
知道原理解決也就很簡單了,就是將0xc000_0000 賦予一個有效的頁表屬性,
通過觀察發現 0xc000_0040 是一個有效的值,我們隻需:
mov edx,0c0000040h
mov eax,[edx]
mov edx,0c0000000h
mov [edx],eax
然後執行訪問0地址的任何指令,就不會發生所謂的無效地址訪問的問題了,
嗬嗬......希望有相同興趣的朋友來聊聊吧。
最後更新:2017-04-02 00:06:15