2011-04-29 53 views
0

我想了解如何讀取進程內存的更多信息。所以,我打開Firefox的過程的「全內存」,在WinHex中,看到下面的十六進制值開始偏移10000進程內存的開始意味着什麼

00 00 00 00 00 00 00 00 EC 6B 3F 80 0C 6D 00 01 EE FF EE FF 01 00 00 00 

我的問題是 是否有可能爲人類在沒有進一步的知識解讀?這些指針或值是什麼?是否有任何東西,除了像endianness這樣的東西之外,對於使用不同編譯器創建的不同程序來說,這些東西對於進程內存來說很常見?它爲什麼從零開始,是不是開始使用空間的非常奇怪的方式?

回答

3

很明顯,你不能做任何事情「沒有進一步的知識」。但是我們已經從Windows這個事實中知道了很多。對於初學者,我們知道可執行文件獲取自己的內存視圖,並且在該虛擬視圖中,可執行文件被加載到其首選起始地址(如EXE的PE頭中所述)。

從0x00010000開始與MS-DOS兼容(是的,即16位操作系統) - 第一個64KB保留,永遠不會有效地址。最大爲0x00400000(4MB)的頁面是爲操作系統保留的,一般在操作系統版本上有所不同。

該範圍內的常見數據結構是過程環境塊。使用WinDBG工具和Microsoft Symbol Server,可以確定Process Envirionment Block是否確實位於偏移量0x10000處,以及它的內容是什麼。