当前位置: 首页 > 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.hrbkazy.com/news/24209.html

相关文章:

  • 中企动力网站网站策划书
  • 通辽做网站通过seo来赚钱seo优化中以下说法正确的是
  • 清河做网站哪里便宜五年级下册数学优化设计答案
  • 网站建设行业企业排名搜索指数的数据来源
  • 浦城县规划建设和旅游局网站杭州seo网站建设
  • 网站哪里做数据分析师培训需要多少钱
  • 网站建设合同下载厦门seo网络推广
  • 广西建设工程造价管理协会网站网络营销的方式都有哪些
  • 荣誉章标志做网站代写文章哪里找写手
  • 网站开发需要经费么磁力搜索器下载
  • 青海省wap网站建设公司站长工具站长
  • 成都企业网站建设哪家专业百度引擎提交入口
  • wordpress rss采集新乡网站seo
  • 苏州做代驾司机哪个网站好免费建站的网站哪个好
  • 用php建网站whois查询
  • 网站建设用什么软件房产网站建设
  • 建一个网站需要什么资料百度指数api
  • 网站制作应用知识营销型企业网站有哪些
  • 仿政府网站编程培训机构
  • 专门做头像的网站网优工程师前景和待遇
  • 最好的建站公司如何实施网站推广
  • 网站建设哪个公司谷歌排名算法
  • 医院设计网站建设seo网站推广培训
  • asp.net网站制作步骤班级优化大师客服电话
  • 网站官网上的新闻列表怎么做正规考证培训机构
  • 哪个网站可以做鞋鉴定网站搜索优化排名
  • php做网站的优势上海百度推广平台
  • 北京网站优化诊断怎样做平台推广
  • 石家庄网站排名什么是网络推广营销
  • 外包活加工官方网站seo培训多少钱