天天看點

通路固定的記憶體位置(Accessing fixed memory locations)

背景

如果有學過彙編,那麼通路記憶體将不是一件難事,因為彙編要求你熟悉每一個記憶體子產品,每一個記憶體位址。我記得當初上彙編的第一節課,老師就說彙編如果不懂的,直接debug那個位址,在指令控制台裡找出那個位址對應的數值。今天我們講的通路固定的記憶體位置也是使然,想成為頂尖的程式員,就必須對每一句代碼裡的每一個記憶體了然于胸。

面試題目

在某工程中,要求設定一絕對位址為0x67a9的整型變量的值為0xaa66。編譯器是一個純粹的ANSI編譯器。

相信大部份人都有看過這道題目,建議的代碼如下

通路固定的記憶體位置(Accessing fixed memory locations)

我不知道有沒有人親自去敲敲這代碼,反正我敲了,代碼是有問題的(可能我的不是ANSI編譯器,又或者這不是一塊有效的位址,當然修改記憶體也是一個比較危險的事,作為一名黑客,或者逆向人員就常幹這事)

通路固定的記憶體位置(Accessing fixed memory locations)

很明顯,這塊記憶體是不允許被寫入的,也就是這塊位址是不被更改的。

通路固定的記憶體位置(Accessing fixed memory locations)

網上還提到一種晦澀的方法

繼續閱讀