简单的介绍Unix系统病毒机制

系统 其他OS
文章中介绍了一些简单的介绍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系统每个段都有一个定位自身起始位置的虚拟地址。可以在代码中使用这个地址。

【编辑推荐】

  1. 关于Unix Shell的使用说明
  2. 关于Tru64 Unix V5.1的实例讲解
  3. 操作系统Unix Shell的知识讲解
  4. 监测Unix操作系统机器检查方法
  5. Unix操作系统命令和配置文件的保护
责任编辑:小霞
相关推荐

2010-05-10 17:14:41

Unix系统

2010-04-29 16:06:07

Unix系统

2010-05-11 09:22:00

Unix系统

2010-05-05 16:59:04

Unix系统

2010-04-29 14:33:01

Unix系统

2010-04-16 14:58:26

2012-02-06 09:49:40

2010-04-26 17:54:16

Unix系统

2010-04-16 15:09:54

2010-04-07 16:55:14

Unix命令

2010-06-18 13:58:10

BGP协议

2010-04-28 14:52:55

Unix系统

2010-04-16 14:30:11

2010-05-06 16:15:04

Unix系统进程

2010-05-11 19:16:03

Unix系统

2010-04-30 14:55:09

Unix系统

2009-03-26 10:36:45

2010-05-04 16:22:45

Unix系统

2009-06-18 09:03:58

Unix关机

2010-05-11 19:08:36

Unix系统
点赞
收藏

51CTO技术栈公众号