PE 格式的重叠部分

问题描述

我想为 PE 格式编写一个加载程序。一个 binary 包含在虚拟地址空间中重叠的两个部分。

     5 sections:
            name     virtual-size    | virtual-address | sizeOfRawData   | ptrToRawData    | characteristics                 
       [ 0] ".text"  0x00116e/  4462 | 0x001000/  4096 | 0x001200/  4608 | 0x000400/  1024 | 0x60000020 R-X CODE             
       [ 1] ".rdata" 0x000e42/  3650 | 0x003000/ 12288 | 0x001000/  4096 | 0x001600/  5632 | 0x40000040 R-- IDATA            
       [ 2] ".data"  0x015011/ 86033 | 0x004000/ 16384 | 0x005200/ 20992 | 0x002600/  9728 | 0xc0000040 RW- IDATA            
       [ 3] ".rsrc"  0x003000/ 12288 | 0x01a000/106496 | 0x002800/ 10240 | 0x007800/ 30720 | 0x40000040 R-- IDATA            
       [ 4] ".reloc" 0x000474/  1140 | 0x01b000/110592 | 0x000000/     0 | 0x007c00/ 31744 | 0x50000000 R-- MEM_SHARED       

此处 .rsrc 的范围为 0x01a000-0x01d000,而 .reloc 的范围为 0x01b000-0x01b474,这是一个明显的重叠。

问题:

  1. 这个二进制文件有什么特别之处,以便这些部分不重叠吗?
  2. 因为 spec 没有说明重叠:这样的二进制文件对 Windows 有效吗?
  3. 哪个部分控制 0x01b000-0x01b474 范围内字节的实际内容
  4. 范围 0x01b000-0x01b474 有什么特征?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)