在PE中,新增节,添加代码

Posted 無碼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PE中,新增节,添加代码相关的知识,希望对你有一定的参考价值。

在PE中,新增节,添加代码

一、先判断节表后是否有空闲位置,添加节表信息,必须多出两个节表位置,最后以零结尾。

二、新增节后,需要修改以下信息

  1、添加一个新节,可以复制一份,最好是拥有可执行属性的节,如.text。

  2、在节表区,新增节的后面,填充一个节,用零填充。

  3、修改标准PE头中节的数量。

  4、修改SizeOfImage的大小。

  5、在原有数据的后面,新增一个节的数据(内存对齐的整倍数)。

  6、修正新增节表的属性。

三、新节各个属性修改说明

  1、Name:名字随便修改,不能超过八个字节。

  2、VirtualSize:申请的新节空间大小,比如1000

  3、VirtualAddress:等于上一个节的VirtualAddress  +  SizeOfRawData

  4、SizeOfRawData:设置可以和VirtualSize一样,比如1000

  5、PointerToRawData:等于上一个节的PointerToRawData+  SizeOfRawData

  6、PointerToRelocation:设置成零

  7、PointerToLineNumbers:设置成零

  8、NumberOfLineRelocations:设置成零

  9、NumberOfLineNumbers:设置成零

  10、Characteristics:块属性0x20000060  可以取上一个节表和本节表的属性值,进行异或  如x|y

标志(属性块) 常用特征值对照表:

[值:00000020h] [IMAGE_SCN_CNT_CODE                // Section contains code.(包含可执行代码)]

[值:00000040h] [IMAGE_SCN_CNT_INITIALIZED_DATA    // Section contains initialized data.(该块包含已初始化的数据)]

[值:00000080h] [IMAGE_SCN_CNT_UNINITIALIZED_DATA  // Section contains uninitialized data.(该块包含未初始化的数据)]

[值:00000200h] [IMAGE_SCN_LNK_INFO                // Section contains comments or some other type of information.]

[值:00000800h] [IMAGE_SCN_LNK_REMOVE              // Section contents will not become part of image.]

[值:00001000h] [IMAGE_SCN_LNK_COMDAT              // Section contents comdat.]

[值:00004000h] [IMAGE_SCN_NO_DEFER_SPEC_EXC       // Reset speculative exceptions handling bits in the TLB entries for this section.]

[值:00008000h] [IMAGE_SCN_GPREL                   // Section content can be accessed relative to GP.]

[值:00500000h] [IMAGE_SCN_ALIGN_16BYTES           // Default alignment if no others are specified.]

[值:01000000h] [IMAGE_SCN_LNK_NRELOC_OVFL         // Section contains extended relocations.]

[值:02000000h] [IMAGE_SCN_MEM_DISCARDABLE         // Section can be discarded.]

[值:04000000h] [IMAGE_SCN_MEM_NOT_CACHED          // Section is not cachable.]

[值:08000000h] [IMAGE_SCN_MEM_NOT_PAGED           // Section is not pageable.]

[值:10000000h] [IMAGE_SCN_MEM_SHARED              // Section is shareable(该块为共享块).]

[值:20000000h] [IMAGE_SCN_MEM_EXECUTE             // Section is executable.(该块可执行)]

[值:40000000h] [IMAGE_SCN_MEM_READ                // Section is readable.(该块可读)]

[值:80000000h] [IMAGE_SCN_MEM_WRITE               // Section is writeable.(该块可写)]

以上是关于在PE中,新增节,添加代码的主要内容,如果未能解决你的问题,请参考以下文章

PE知识复习之PE新增节

P45新增节

PE 新增一个节区细节

PE 新增一个节区细节

PE 新增一个节区细节

Inject shellcode into PE file