传统计算机病毒

版权声明:孤 https://blog.csdn.net/Wu000999/article/details/89325842

引导型病毒编制原理

PC引导流程
在这里插入图片描述引导区病毒取得控制权的过程
在这里插入图片描述
COM\EXE\NE文件结构及运行原理

COM格式

  • 最简单的可执行文件就是DOS下的以COM(Copy Of Memory)文件。
  • COM格式文件最大64KB,内含16位程序的二进制代码映像,没有重定位信息。
  • COM文件包含程序二进制代码的一个绝对映像,也就是说,为了运行程序准确的处理器指令和内存中的数据,DOS通过直接把该映像从文件拷贝到内存来加载COM程序,系统不需要作重定位工作。

加载COM程序

  • DOS尝试分配内存。因为COM程序必须位于一个64K的段中,所以COM文件的大小不能超过65,024(64K减去用于PSP的256字节和用于一个起始堆栈的至少256字节)。
  • 如果DOS不能为程序、一个PSP、一个起始堆栈分配足够内存,则分配尝试失败。
  • 否则,DOS分配尽可能多的内存(直至所有保留内存),即使COM程序本身不能大于64K。
  • 在试图运行另一个程序或分配另外的内存之前,大部分COM程序释放任何不需要的内存。
  • 分配内存后,DOS在该内存的头256字节建立一个PSP(Program Segment Prefix:程序段前缀)。
  • 创建PSP后,DOS在PSP后立即开始(偏移100H)加载COM文件,它置SS、DS和ES为PSP的段地址,接着创建一个堆栈。
  • DOS通过把控制传递偏移100H处的指令而启动程序。程序设计者必须保证COM文件的第一条指令是程序的入口点。
  • 因为程序是在偏移100H处加载,因此所有代码和数据偏移也必须相对于100H。汇编语言程序设计者可通过置程序的初值为100H而保证这一点(例如,通过在源代码的开始使用语句org 100H)。

在这里插入图片描述COM文件病毒原理

感染过程:

  • 将开始的3个字节保存在orgcode中.
  • 将这3个字节更改为0E9H和COM文件的实际大小的二进制编码。
  • 将病毒写入原COM文件的后边。
  • 在病毒的返回部分,将3个字节改为0E9H和表达式(当前地址-COM文件的实际大小-病毒代码大小)的二进制编码,以便在执行完病毒后转向执行原程序。

PE文件结构及其运行原理

PE文件格式总体结构

PE(Portable Executable:可移植的执行体)

  • 是Win32环境自身所带的可执行文件格式。
  • 它的一些特性继承自Unix的Coff(Common Object File Format)文件格式。
  • 可移植的执行体意味着此文件格式是跨win32平台的,即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。
  • 当然,移植到不同的CPU上PE执行体必然得有一些改变。

除VxD和16位的Dll外,所有 win32执行文件都使用PE文件格式。因此,研究PE文件格式是我们洞悉Windows结构的良机。

猜你喜欢

转载自blog.csdn.net/Wu000999/article/details/89325842