程序記憶體分為2部分,一部分系統記憶體,一部分使用者記憶體。系統記憶體所有程序共享,作業系統,裝置驅動等就在這個部分,這樣所有程序才能訪問作業系統功能。使用者記憶體則分開。應用程式訪問記憶體的時候是訪問虛擬記憶體,不是物理記憶體。虛擬記憶體跟物理記憶體有個對映,比如0—1g為系統記憶體,所有的應用程式記憶體對映的時候,都指向同一塊記憶體,這樣就實現不同應用之間記憶體共享。而1g以上記憶體對映時候,每個程序都不一樣,這樣就實現程序資料隔離。作業系統甚至可以把使用者記憶體不做真實的物理記憶體對映,但物理記憶體不夠的適合,儲存到硬碟,把物理記憶體釋放出來給其他應用。如果要竊取其他應用記憶體,要竊取是系統記憶體部分,之間用指標訪問即可,前提是你得知道具體位置以及具體含義。另外還要獲取超級使用者許可權。系統記憶體在使用者程序是沒有許可權讀取的,這就要利用各種bug了,作業系統,驅動程式,共享庫等,這些程式碼都在系統記憶體執行,使用者程序呼叫系統程式碼(作業系統,驅動程式,共享庫)時候,會把許可權升級到最高級別,英文作業系統認為系統程式碼是可靠的。而bug出現就會讓系統程式碼出現異常,就可能會出現許可權還在最高級別的時候錯誤的執行使用者程式碼,如堆疊溢位攻擊。這樣就可以獲取其他應用的資料了。有了許可權,使用者記憶體的資料也很容易獲取了。對於debug來說,原理是不一樣的,debug是把使用者程序程式碼嵌入到debug程序裡面來實現的,對作業系統來說,只有debug程序,類似病毒一樣,他是修改了原來的程式碼來實現的。顯然沒有辦法透過debug獲取其他程序的記憶體資訊,要是可以,也不需要駭客了。
程序記憶體分為2部分,一部分系統記憶體,一部分使用者記憶體。系統記憶體所有程序共享,作業系統,裝置驅動等就在這個部分,這樣所有程序才能訪問作業系統功能。使用者記憶體則分開。應用程式訪問記憶體的時候是訪問虛擬記憶體,不是物理記憶體。虛擬記憶體跟物理記憶體有個對映,比如0—1g為系統記憶體,所有的應用程式記憶體對映的時候,都指向同一塊記憶體,這樣就實現不同應用之間記憶體共享。而1g以上記憶體對映時候,每個程序都不一樣,這樣就實現程序資料隔離。作業系統甚至可以把使用者記憶體不做真實的物理記憶體對映,但物理記憶體不夠的適合,儲存到硬碟,把物理記憶體釋放出來給其他應用。如果要竊取其他應用記憶體,要竊取是系統記憶體部分,之間用指標訪問即可,前提是你得知道具體位置以及具體含義。另外還要獲取超級使用者許可權。系統記憶體在使用者程序是沒有許可權讀取的,這就要利用各種bug了,作業系統,驅動程式,共享庫等,這些程式碼都在系統記憶體執行,使用者程序呼叫系統程式碼(作業系統,驅動程式,共享庫)時候,會把許可權升級到最高級別,英文作業系統認為系統程式碼是可靠的。而bug出現就會讓系統程式碼出現異常,就可能會出現許可權還在最高級別的時候錯誤的執行使用者程式碼,如堆疊溢位攻擊。這樣就可以獲取其他應用的資料了。有了許可權,使用者記憶體的資料也很容易獲取了。對於debug來說,原理是不一樣的,debug是把使用者程序程式碼嵌入到debug程序裡面來實現的,對作業系統來說,只有debug程序,類似病毒一樣,他是修改了原來的程式碼來實現的。顯然沒有辦法透過debug獲取其他程序的記憶體資訊,要是可以,也不需要駭客了。