1.分类 (1)结构重叠 (2)空间调整 (3)数据转移 (4)数据压缩 2.结构重叠 (1) 简介 在不影响运行的前提下将某些数据结构字段进行重叠,并修正需要修正的字段 (2)条件 被覆盖中的数据是某一个结构不重要的部分;2个结构共用重叠部分的值,这样就需要这两个结构在重叠部分值相同. (3)个人感觉用途不大,只能缩小PE文件大小,而且缩小大小不会很多 3.空间调整 (1)简介 将可变大小的部分进行扩大,并修正需要修正的字段 (2)例如 修改IMAGE_DOS_HEADER的e_lfanew的值来扩大IMAGE_DOS_HEADER的大小 这里需要修正的字段: IMAGE_OPTIONAL_HEADER32.AddressOfEntryPoint IMAGE_OPTIONAL_HEADER32.SizeOfImage IMAGE_OPTIONAL_HEADER32.SizeOfHeaders IMAGE_SECTION_HEADER.VirtualAddress IMAGE_SECTION_HEADER.PointerToRawData ..等等 4.数据转移 (1)简介 将pe中某处数据转移到另一个位置.包括数据和代码.常用于病毒.软件加解密 5.数据压缩 如果指令代码比较长,先对其压缩,在PE头中放一段解压代码.代码入口指向解压代码,解压完了后跳到正常代码处执行 6.可用空间 1.文件头空间 IMAGE_DOS_HEADER 除了e_magic和e_lfanew字段的之外的 IMAGE_FILE_HEADER TimeDateStamp,PointerToSymbolTable,NumberOfSymbols IMAGE_OPTIONAL_HEADER MajorVersionLinker,MinorVersionLinker,SizeOfCode,SizeOfInitializedData,SizeOfUninitializedData BaseOfCode BaseOfData, MajorImageVersion MinorImageVersion MajorSubsystemVersion MinorSubsystemVersion, MajorOperatingSystemVersion; MinorOperatingSystemVersion; CheckSum;LoaderFlags IMAGE_DATA_DIRECTORY 从0开始第0个字段,3-8个字段, 第15个字段 IMAGE_SECTION_HEADER PointerToRelocations; PointerToLinenumbers; NumberOfRelocations; NumberOfLinenumbers;Name 7.需要注意的地方 可以没有节表,但是IMAGE_FILE_HEADER.NumberOfSection至少为1 内存对齐>=文件对齐 将代码和数据所在的节的属性改为可读可写可执行 特殊字段可能需要修正: IMAGE_OPTIONAL_HEADER32.NumberOfRvaAndSizes IMAGE_OPTIONAL_HEADER32.SizeOfCode IMAGE_OPTIONAL_HEADER32.AddressOfEntryPoint IMAGE_OPTIONAL_HEADER32.SectionAlignment IMAGE_OPTIONAL_HEADER32.FileAlignment IMAGE_OPTIONAL_HEADER32.SizeOfImage IMAGE_OPTIONAL_HEADER32.SizeOfHeaders IMAGE_FILE_HEADER.SizeOfOptionalHeader IMAGE_FILE_HEADER.NumberOfSymbols IMAGE_DOS_HEADER.e_lfanew
转载于:https://www.cnblogs.com/freesec/p/6683287.html