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

联想桥做网站公司php网站开发技术期末题库

联想桥做网站公司,php网站开发技术期末题库,注册个人网站,湖南网络公司关于我们节表#xff08;Section Table#xff09;是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构#xff0c;它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息#xff0c;是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据…节表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.zqtcl.cn/news/635538/

相关文章:

  • 电子商城网站开发公司泰州网络营销
  • 网站建设公司利润分配一些常用的网站
  • 鄂尔多斯做网站的公司北京企业网站设计报价
  • 南宁关键词网站排名wordpress付免签插件
  • 龙岩网站定制电子政务与网站建设方面
  • 东莞网站制作十强英语培训机构网站建设策划书
  • 住房和城乡建设部网站加装电梯苏州外发加工网
  • 企业网站管理系统带授权广州seo报价
  • 建设门户网站的意义旅游电商网站建设方案模板
  • 网站做动态图片不显示某购物网站开发项目
  • 大淘客网站logo怎么做紫鸟超级浏览器手机版
  • 专做公司网站 大庆wordpress编辑器百度云
  • 企业手机网站模板下载网站建设实训 考核要求
  • 企业网站建设的ppt4414站长平台
  • 物流网站制作怎么做pc网站开发
  • 合肥做网站可以吗网站程序 seo
  • 网站备案 动态ip网站多域名
  • 网站加速免费电子商务网站建设的认识
  • 做职业资格考试的网站有哪些网页游戏排行榜2024前十名
  • 网站设计方案怎么写wordpress仿站软件
  • 汕头建站模板系统北京有哪些电商平台公司
  • 深圳网站建设zhaoseo小包工头接活的平台
  • 电商平面设计前景如何seo推广什么意思
  • 网站解析不了wordpress 密码失败
  • 临沂企业建站系统模板扮家家室内设计
  • 做简单网站用什么软件网站开发国外研究现状
  • 江苏seo推广网站建设湖南软件定制开发
  • 台州商务网站手机端seo
  • 网站的切换语言都是怎么做的有哪些开发网站公司
  • 上海人才中心网站湖州建设公司网站