1. 程式人生 > >結合_虛擬地址空間_簡明扼要地談談蠕蟲病毒的原理

結合_虛擬地址空間_簡明扼要地談談蠕蟲病毒的原理

--------參考文獻   湯, 樑, 哲, 湯.計算機作業系統(第四版)[M].西安:西安電子科技大學出版社,2014.5:123-124, 395-396.

一、 ALM的缺陷

Absolute Loading Mode 絕對裝入方式。當計算機系統很小,且僅執行單道程式時,完全有可能知道程式將駐留在記憶體的什麼位置。為了闡述上的方便,談論一個無需進行連結單個目標模組的裝入過程。在這種情況下,程式進行編譯後,將產生絕對地址(實體地址)的目的碼。

程式中所使用的地址既可以在編譯或彙編時給出,也可以由程式設計師直接賦予。但是由程式設計師直接給出絕對地址時,不僅要求程式設計師熟悉記憶體的使用情況,而且一旦程式或資料被修改後,可能要改變程式中的所有地址。

不可修補的缺陷:程式設計師需要直接操縱記憶體,非常繁瑣而且容易出錯。

二、 虛擬地址空間

與可重定位技術緊密聯絡在一起。

圖1 虛擬地址空間

三、 訪問越界

圖2 蠕蟲病毒示意圖

如圖2 所示,返回地址存放的是當函式funcA執行結束時,整段程式將從何處開始繼續執行。為變數B分配的棧空間是紫色的部分,如果不加訪問越界檢查,值就會將返回地址覆蓋,這就導致函式呼叫結束繼續向下執行會跳轉到未知的地方。如果黑客攻擊者經過精心計算,將他所設計的惡意軟體的起始地址覆蓋在原來棧中存放的返回地址,把惡意軟體本身也推入棧中。這樣當函式呼叫結束時,流程便會去執行惡意軟體。