|
| |
精品推荐 |
 |
|
| |
|
|
|
|
Unix/ELF文件格式及病毒分析
|
日期:2005年3月29日 作者:清风网络学院 查看:[大字体
中字体 小字体]
|
<!--StartFragment-->★ 介绍
本文介绍了Unix病毒机制、具体实现以及ELF文件格式。简述了Unix病毒检测和反检 测技术,提供了Linux/i386架构下的一些例子。需要一些初步的Unix编程经验,能够 理解Linux/i386下汇编语言,如果理解ELF本身更好。
本文没有任何实际意义上的病毒编程技术,仅仅是把病毒原理应用到Unix环境下。这 里也不打算从头介绍ELF规范,感兴趣的读者请自行阅读ELF规范。
★ 感染 ELF 格式文件
进程映象包含"文本段"和"数据段",文本段的内存保护属性是r-x,因此一般自修改 代码不能用于文本段。数据段的内存保护属性是rw-。
段并不要求是页尺寸的整数倍,这里用到了填充。
关键字:
[...] 一个完整的页 M 已经使用了的内存 P 填充
页号 #1 [PPPPMMMMMMMMMMMM] \ #2 [MMMMMMMMMMMMMMMM] |-- 一个段 #3 [MMMMMMMMMMMMPPPP] /
段并没有限制一定使用多个页,因此单页的段是允许的。
页号 #1 [PPPPMMMMMMMMPPPP] <-- 一个段
典型的,数据段不需要从页边界开始,而文本段要求起始页边界对齐,一个进程映象 的内存布局可能如下:
关键字:
[...] 一个完整的页 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下,堆栈段总是在数据段被给予足够<a href='http://idc.77169.com' color='#bb0000'><FONT color=#f73809>空间</Font></a>之后才定位的,一般堆栈位于内存高 端,它是向低端增长的。
在ELF文件中,可装载段都是物理映象:
ELF Header . . Segment 1 <-- 文本段 Segment 2 <-- 数据段 . .
每个段都有一个定位自身起始位置的虚拟地址。可以在代码中使用这个地址。
为了插入寄生代码,必须保证原来的代码不被破坏,因此需要扩展相应段所需内存。
文本段事实上不仅仅包含代码,还有 ELF 头,其中包含动态链接信息等等。如果直 接扩展文本段插入寄生代码,带来的问题很多,比如引用绝对地址等问题。可以考虑 保持文本段不变,额外增加一个段存放寄生代码。然而引入一个额外的段的确容易引 起怀疑,很容易被发现。
向高端扩展文本段或者向低端扩展数据段都有可能引起段重叠,在内存中重定位一个 段又会使那些引用了绝对地址的代码产生问题。可以考虑向高端扩展数据段,这不是 个好主意,有些Unix完整地实现了内存保护机制,数据段是不可执行的。
上一篇:Windows下的HEAP溢出及其利用
下一篇:printf()格式化串安全漏洞分析(上)
|
| Unix/ELF文件格式及病毒分析 相关文章: |
|
|
|
| Unix/ELF文件格式及病毒分析 相关软件: |
|
|
|
|