PE文件结构与计算机病毒解析

需积分: 10 6 下载量 193 浏览量 更新于2024-07-22 1 收藏 2.17MB PDF 举报
"这篇资料是武汉大学软件安全课程的课件,主要讲解了PE文件结构与计算机病毒的相关知识。由武汉大学计算机学院的彭国军教授授课,内容涵盖了PE文件的各个组成部分,以及这些结构与计算机病毒之间的关联。" 本文档深入探讨了PE(Portable Executable)文件格式,这是Windows操作系统中用于执行程序和动态链接库(DLL)的标准格式。首先,PE文件由MS-DOS MZ文件头、DOS Stub、PE文件头和多个节组成。MS-DOS MZ头包含了PE文件的魔数(MZ),用于识别文件格式,以及一个指针(e_lfanew)指向PE文件头的位置。 PE文件头紧接着DOS MZ头,包含了大量的元数据信息,如文件类型、入口点地址、节表的偏移量等。这部分信息对于理解程序的执行流程至关重要。接下来是节表,它定义了文件的各个部分,比如代码、数据、资源等。每个节都有自己的属性,如大小、内存属性和相对于文件起始位置的偏移量。 在讨论计算机病毒时,我们了解到病毒通常通过插入自身的代码到PE文件中来感染它们。这要求病毒能够理解PE文件的结构,并找到合适的位置插入而不破坏原有的功能。PE病毒可能修改节表,增加新的节来存放病毒代码,或者直接在现有节中插入代码。为了使感染后的文件仍然可以执行,病毒必须确保不改变关键的执行流信息,如入口点。 此外,PE程序使用DLL引入API(应用程序接口)函数。DLL文件通过导出表声明自己提供的函数,使得其他程序可以通过导入表找到并调用这些函数。DLL的这种机制允许代码共享,但同时也可能被病毒利用,因为病毒可以注入DLL来劫持API调用。 传统PE病毒可能不直接调用API函数,而是通过查找API函数在内存中的地址来间接调用。这是因为API地址可能会随着系统的不同而变化。这个过程称为API Hooking,是许多恶意软件和病毒常用的技巧。病毒可以通过扫描PE文件的导入表来获取API函数的地址,然后替换原有地址以实现控制或监视目的。 理解PE文件结构对于分析和防御计算机病毒至关重要。通过对文件头、节表等关键部分的解析,我们可以检测潜在的病毒感染,同时也能设计出更有效的反病毒策略。在软件安全领域,深入研究PE文件结构是防范和对抗病毒攻击的基础。