· 病毒原型的工作过程
1  首先通过ELF Infector将病毒代码感染到一个ELF文件,这样就创造了第一
个带毒文件,后续的传播就由它来完成。

2  当带毒文件被执行时,会首先跳到病毒代码开始执行。

3  病毒代码开始发作,在这个原型里,病毒会直接开始传播。

4  病毒遍历当前目录下的每一个文件,如果是符合条件的ELF文件就开始感染。

5  病毒的感染过程和ELF Infector的过程类似,但由于工作环境的不同,代码的实现也是有较大区别的。

6  目前传染对ELF文件的基本要求是文本段要有剩余空间能够容纳病毒代码,如果无法满足,病毒会忽略此ELF。对于被感染过一次的ELF文件,文本段不会有剩余的空间,因此二次感染是不会发生的。

7  病毒代码执行过后,会恢复堆栈和所有寄存器(这很重要),然后跳回真正的可执行文件入口,开始正常的运行过程。

· 参考文献

Silvio Cesare:《UNIX ELF PARASITES AND VIRUS》

一个Linux病毒的原型分析

  技术天地: 这篇文章的目的主要是对最近写的一个Linux病毒原型代码做一个总结, 同时向对这方面有兴趣的朋友做一个简单的介绍。 阅读这篇文章你需要一些知识,要对ELF有所了解、能够阅读一些嵌入了汇编的C代码、了解病毒的基本工作原理。

  作者既不是一个virus coder,也不是anti-viruscoder,这篇文章旨通过对一个Linux的病毒原型的工作原理和关键环节的分析和介绍来让揭开病毒的神秘面纱,使您了解病毒的工作机理,也同时对理解Linux的系统编程有所帮助。
                     阅读全文 >>>>

    文章精彩内容

·ELF Infector(ELF文件感染器)

 为了制作病毒文件,我们需要一个ELF文件感染器,用于制造第一个带毒文件。这一节我们介绍ELF文件感染技术


·
十个关键技术问题及处理
 
1、ELF文件执行流程重定向和代码插入
2、病毒代码如何返回到真正的ELF文件入口
3、堆栈和寄存器的恢复
4、遭遇gcc-3.3的bug
5、通过C语言和inline保证病毒代码的可读性和可移植性
6、病毒代码复制时如何获得自己的起始地址?
7、病毒代码复制时如何获得自己的起始地址?
8、抛弃C库
9、保证病毒代码的瘦身需要
10、数据结构的不一致

· 新编译环境下的调试方法

 

病毒原型源代码

·g-elf_infector.c
·gvirus.h
·gvirus.c
·gunistd.h
·gsyscall.h
·foo.c
·Makefile
·来源:赛迪网       
·责任编辑:T113 ·发布日期:2005.03.8