剖析Linux病毒原型工作过程和关键环节2007-06-2609:59作者:来源:赛迪网一、介绍写这篇文章的目的主要是对最近写的一个Linux病毒原型代码做一个总结,同时向对这方面有兴趣的朋友做一个简单的介绍。阅读这篇文章你需要一些知识,要对ELF有所了解、能够阅读一些嵌入了汇编的C代码、了解病毒的基本工作原理。二、ELFInfector(ELF文件感染器) 为了制作病毒文件,我们需要一个ELF文件感染器,用于制造第一个带毒文件。对于ELF文件感染技术,在SilvioCesare的《UNIXELFPARASITESANDVIRUS》一文中已经有了一个非常好的分析、描述,在这方面我还没有发现可以对其进行补充的地方,因此在这里我把SilvioCesare对ELFInfection过程的总结贴出来,以供参考:Thefinalalgorithmisusingthisinformationis. *Increasep_shoffbyPAGE_SIZEintheELFheader *Patchtheinsertioncode(parasite)tojumptotheentrypoint (original) *Locatethetextsegmentprogramheader *ModifytheentrypointoftheELFheadertopointtothenew code(p_vaddr+p_filesz) *ountforthenewcode(parasite) *ountforthenewcode(parasite) *Foreachphdrwho'ssegmentisaftertheinsertion(textsegment) *increasep_offsetbyPAGE_SIZE *Forthelastshdrinthetextsegment *increasesh_lenbytheparasitelength *Foreachshdrwho'ssectionresidesaftertheinsertion *Increasesh_offsetbyPAGE_SIZE *Physicallyinsertthenewcode(parasite)andpadtoPAGE_SIZE,into thefile-textsegmentp_offset+p_filesz(original) 在Linux病毒原型中所使用的gei-ELFInfector即是根据这个原理写的。在附录中你可以看到这个感染工具的源代码:g-elf--elf-infector与病毒是独立开的,其只在制作第一个病毒文件时被使用。我简单介绍一下它的使用方法,g-elf---将二进制代码插入到指定文件的文本段,并在目标文件执行时首先被执行--的用途上。g-elf-,你只需要提供以下三个定义: *存放你的二进制代码返回地址的地址,这里需要的是这个地址与代码起始地址的偏移,用于返回到目标程序的正常入口#definePARACODE_RETADDR_ADDR_OFFSET1232 *要插入的二进制代码(由于用C编写,所以这里需要以一个函数的方式提供) voidparasite_code(void); *
剖析Linux病毒原型工作过程和关键环节 来自淘豆网www.taodocs.com转载请标明出处.