当前位置: 首页 > news >正文

广州市品牌网站建设公司网站制作出名的公司

广州市品牌网站建设公司,网站制作出名的公司,郑州建设工程信息网站,免费建设网站设计页面节表(Section Table)是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构,它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息,是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据…

节表(Section Table)是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构,它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息,是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据。节表中的每个记录则被称为IMAGE_SECTION_HEADER,它记录了一个段的各种属性信息和在文件中的位置和大小等信息,一个文件可以由多个IMAGE_SECTION_HEADER构成。

在执行PE文件的时候,Windows 并不在一开始就将整个文件读入内存,PE装载器在装载的时候仅仅建立好虚拟地址和PE文件之间的映射关系,只有真正执行到某个内存页中的指令或者访问页中的数据时,这个页面才会被从磁盘提交到内存中,这种机制极大的节约了内存资源,使文件的装入速度和文件的大小没有太多的关系。

Windows 装载器在装载DOS部分PE文件头部分和节表部分时不进行任何处理,而在装载节区的时候会根据节的不同属性做不同的处理,一般需要处理以下几个方面的内容:

节区的属性: 节是相同属性的数据的组合,当节被装入内存的时候,同一个节对应的内存页面将被赋予相同的页属性,Windows系统对内存属性的设置是以页为单位进行的,所以节在内存中的对其单位必须至少是一个页的大小,对于X86来说这个值是4KB(1000h),而对于X64来说这个值是8KB(2000h),磁盘中存储的程序并不会对齐4KB,而只有被PE加载器载入内存的时候,PE装载器才会自动的补齐4KB对其的零头数据。

节区的偏移: 节的起始地址在磁盘文件中是按照IMAGE_OPTIONAL_HEADER结构的FileAhgnment字段的值对齐的,而被加载到内存中时是按照同一结构中的SectionAlignment字段的值对齐的,两者的值可能不同,所以一个节被装入内存后相对于文件头的偏移和在磁盘文件中的偏移可能是不同的。

节区的尺寸: 由于磁盘映像和内存映像的对齐单位不同,磁盘中的映像在装入内存后会自动的进行长度扩展,而对于未初始化的数据段(.data?)来说,则没有必要为它在磁盘文件中预留空间,只要可执行文件装入内存后动态的为其分配空间即可,所以包含未初始化数据的节在磁盘中长度被定义为0,只有在运行后PE加载器才会动态的为他们开辟空间。

不进行映射的节: 有些节中包含的数据仅仅是在装入的时候用到,当文件装载完毕时,他们不会被递交到物理内存中,例如重定位节,该节的数据对于文件的执行代码来说是透明的,他只供Windows装载器使用,可执行代码根本不会访问他们,所以这些节存在于磁盘文件中,不会被映射到内存中。

一般来说,当一个PE文件被编译生成时则默认会存在.text,.data等基本节表,而每一个节表都是由一个IMAGE_SECTION_HEADER结构排列而成,每个结构都用来描述一个节,节表总被存放在紧接在PE文件头的地方,也即是从PE文件头开始偏移为00f8h的位置,针对每一个节中的定义可查看节表结构体的定义;

typedef struct _IMAGE_SECTION_HEADER
{BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];union {DWORD   PhysicalAddress;DWORD   VirtualSize;           // 节区尺寸} Misc;DWORD   VirtualAddress;                // 节区RVADWORD   SizeOfRawData;                 // 在文件中对齐后的尺寸DWORD   PointerToRawData;              // 在文件中的偏移DWORD   PointerToRelocations;          // 在OBJ文件中使用DWORD   PointerToLinenumbers;WORD    NumberOfRelocations;WORD    NumberOfLinenumbers;DWORD   Characteristics;               // 节区属性字段
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

针对IMAGE_SECTION_HEADER中各个字段的详细解析:

  • Name:段名,是一个8字节的ASCII字符串,不足8字节用0补齐。

  • VirtualSize:虚拟大小,标识在内存中占用的大小,请勿与PhysicalSize(物理大小)混淆。

  • VirtualAddress:虚拟地址,标识在内存中对应段头的地址,与实际加载的位置有关。

  • SizeOfRawData:物理大小,标识在PE文件中该段的占用大小,不足以文件对齐单位则会进行填充。

  • PointerToRawData:物理地址,标识该段在文件中的偏移位置。

  • PointerToRelocations:重定向表的偏移位置。

  • PointerToLinenumbers:行号表的偏移位置。

  • NumberOfRelocations:重定向表数量。

  • NumberOfLinenumbers:行号表数量。

  • Characteristics:标识该段的各种属性信息,包括下列常用属性:

    • IMAGE_SCN_MEM_READ:可读;
    • IMAGE_SCN_MEM_WRITE:可写;
    • IMAGE_SCN_MEM_EXECUTE:可执行;
    • IMAGE_SCN_CNT_CODE:代码段;
    • IMAGE_SCN_CNT_INITIALIZED_DATA:已初始化数据段;
    • IMAGE_SCN_CNT_UNINITIALIZED_DATA:未初始化数据段;
    • IMAGE_SCN_LNK_INFO:包含附加信息。

与数据目录表的枚举方式基本一致,数据目录表的枚举也不会太难,读者只需要通过NtHeader->FileHeader.NumberOfSections获取到当前有多少个节,并通过循环的方式依次得到这些节中的指针,并将该指针转换为PIMAGE_SECTION_HEADER结构,依次循环输出即可得到;

int main(int argc, char * argv[])
{BOOL PE = IsPeFile(OpenPeFile("c://pe/x86.exe"), 0);if (PE == TRUE){printf("编号\t 节区名称\t虚拟偏移\t虚拟大小\t实际偏移\t实际大小\t节区属性\n");for (DWORD each = 0; each < NtHeader->FileHeader.NumberOfSections; each++, pSection++){printf("%d\t %-9s\t 0x%.8X \t 0x%.8X \t 0x%.8X \t 0x%.8X \t 0x%.8X \n",each + 1, pSection->Name, pSection->VirtualAddress, pSection->Misc.VirtualSize,pSection->PointerToRawData, pSection->SizeOfRawData, pSection->Characteristics);}}else{printf("非标准程序 \n");}system("pause");return 0;
}

运行上述程序,即可输出当前程序中存在的节表信息,输出效果如下图所示;

http://www.mnyf.cn/news/37958.html

相关文章:

  • 网站换域名要怎么做长沙排名优化公司
  • 营销型网站的建设步骤长春免费网上推广
  • 做网站那家比较好青岛官网seo方法
  • 海南爱心扶贫网站是哪个公司做的包括哪些内容
  • 昆明公司网站建设长沙seo
  • 做漫画网站空间多大老鬼seo
  • 做网站用什么配置笔记本上海职业技能培训机构一览表
  • 张店政府网站建设托管简述获得友情链接的途径
  • 网站ip域名查询2022年可以打开的网址
  • 自己做民宿在什么网站上投放武汉网站推广很 棒
  • 淘宝网站建设方案模板下载巨量算数数据分析
  • 想找个人做网站做电商如何起步
  • 网站建设有什么好处房地产销售
  • 淮安 网站建设:seo学习网站
  • 微信 app 微网站 整合魔贝课凡seo
  • 网站开发与rest智能识别图片
  • 广州网站制作电话视频号直播推广二维码
  • wordpress 添加内容山西seo排名
  • 做兼职哪个网站比较好免费建站哪个最好
  • 成都制作网站公司可以搜索国外网站的搜索引擎
  • 如何设计网站建设引导页谷歌广告推广网站
  • 做网站的技术路线合肥正规的seo公司
  • 怎么做自己的淘宝客网站网络推广费用大概价格
  • 服装移动网站策划案seo整站优化公司持续监控
  • 专业网站设计推荐澳门seo推广
  • 静态网站建设汕头seo管理
  • 寮步网站建设极致发烧营销推广案例
  • 设计网站behance苏州网站建设优化
  • wordpress启用https无法登录seo网站关键词优化方式
  • 自己做网站靠挂百度在线工具seo