歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

簡單的介紹Unix系統病毒機制

本文介紹了Unix系統病毒機制、具體實現以及ELF文件格式。簡述了Unix系統病毒檢測和反檢測技術,提供了Linux/i386架構下的一些例子。需要一些初步的Unix系統編程經驗,能夠理解Linux/i386下匯編語言,如果理解ELF本身更好。

本文沒有任何實際意義上的病毒編程技術,僅僅是把病毒原理應用到Unix系統環境下。這裡也不打算從頭介紹ELF規范,感興趣的讀者請自行閱讀ELF規范。

Unix系統感染 ELF 格式文件

進程映象包含"文本段"和"數據段",文本段的內存保護屬性是r-x,因此一般自修改代碼不能用於文本段。數據段的內存保護屬性是rw-。

段並不要求是頁尺寸的整數倍,這裡用到了填充。

關鍵字:

[...] 一個完整的頁
M 已經使用了的內存
P 填充

頁號
#1 [PPPPMMMMMMMMMMMM] \
#2 [MMMMMMMMMMMMMMMM] |-- 一個段
#3 [MMMMMMMMMMMMPPPP] /

段並沒有限制一定使用多個頁,因此單頁的段是允許的。

頁號
#1 [PPPPMMMMMMMMPPPP] <-- 一個段

Unix系統典型的,數據段不需要從頁邊界開始,而文本段要求起始頁邊界對齊,一個進程映象的內存布局可能如下:

關鍵字:

[...] 一個完整的頁
T 文本段內容
D 數據段內容
P 填充

頁號
#1 [TTTTTTTTTTTTTTTT] <-- 文本段內容
#2 [TTTTTTTTTTTTTTTT] <-- 文本段內容
#3 [TTTTTTTTTTTTPPPP] <-- 文本段內容(部分)
#4 [PPPPDDDDDDDDDDDD] <-- 數據段內容(部分)
#5 [DDDDDDDDDDDDDDDD] <-- 數據段內容
#6 [DDDDDDDDDDDDPPPP] <-- 數據段內容(部分)

頁1、2、3組成了文本段
頁4、5、6組成了數據段

從現在開始,為簡便起見,段描述圖表用單頁,如下:

頁號
#1 [TTTTTTTTTTTTPPPP] <-- 文本段
#2 [PPPPDDDDDDDDPPPP] <-- 數據段

在i386下,堆棧段總是在數據段被給予足夠空間之後才定位的,一般堆棧位於內存高端,它是向低端增長的。

在ELF文件中,可裝載段都是物理映象:

  1. ELF Header   
  2. .   
  3. .   
  4. Segment 1 <-- 文本段   
  5. Segment 2 <-- 數據段   
  6. .   
  7. .  

Unix系統每個段都有一個定位自身起始位置的虛擬地址。可以在代碼中使用這個地址。

Copyright © Linux教程網 All Rights Reserved