Unix系统插入寄生代码知识讲解

系统 其他OS
在文章中,我们可以考虑向高端扩展数据段,这不是个好主意,有些Unix系统完整地实现了内存保护机制,数据段是不可执行的。

Unix系统为了插入寄生代码,必须保证原来的代码不被破坏,因此需要扩展相应段所需内存。文本段事实上不仅仅包含代码,还有 ELF 头,其中包含动态链接信息等等。

如果Unix系统直接扩展文本段插入寄生代码,带来的问题很多,比如引用绝对地址等问题。可以考虑保持文本段不变,额外增加一个段存放寄生代码。然而引入一个额外的段的确容易引起怀疑,很容易被发现。

向高端扩展文本段或者向低端扩展数据段都有可能引起段重叠,在内存中重定位一个段又会使那些引用了绝对地址的代码产生问题。可以考虑向高端扩展数据段,这不是个好主意,有些Unix系统完整地实现了内存保护机制,数据段是不可执行的。

段边界上的页填充提供了插入寄生代码的地方,只要空间允许。在这里插入寄生代码不破坏原有段内容,不要求重定位。文本段结尾处的页填充是个很好的地方,***看上去象下面这个样子:
关键字:
[...] 一个完整的页
V 寄生代码
T 文本段内容
D 数据段内容
P 填充

页号
#1 [TTTTTTTTTTTTVVPP] <-- 文本段
#2 [PPPPDDDDDDDDPPPP] <-- 数据段

一个更完整的ELF可执行布局如下:
 

  1. ELF Header   
  2. Program header table   
  3. Segment 1   
  4. Segment 2   
  5. Section header table   
  6. Section 1   
  7. .   
  8. .   
  9. Section n 

典型的,额外的节(那些没有相应段的节)用于存放调试信息、符号表等等。

【编辑推荐】

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

2010-05-05 15:02:39

Unix系统

2010-05-04 16:33:39

Unix系统

2010-04-30 18:20:23

Unix系统

2010-05-04 09:45:28

Unix系统

2010-04-30 01:28:59

Unix系统

2010-04-29 13:30:20

Unix操作系统

2010-05-06 09:26:44

Unix系统

2010-04-20 11:34:26

Unix操作系统

2010-05-05 17:46:32

Unix文件系统

2010-05-06 14:24:56

Unix系统交换区

2010-05-05 13:13:55

Unix内核

2010-05-04 17:17:46

Unix类

2010-05-11 18:03:28

2010-04-30 14:51:23

Unix系统

2010-04-19 17:34:02

Unix操作系统

2010-04-20 10:12:40

Unix操作系统

2010-04-19 17:47:59

Unix操作系统

2010-05-05 13:45:21

Unix Telnet

2010-04-30 13:38:51

Unix at命令

2010-05-04 09:22:10

Unix文件
点赞
收藏

51CTO技术栈公众号