一个奇怪的PE文件

TestSwitch.rar里的PE文件很奇怪(这个文件是我自己代码编译出来的)

看图1

IMAGE_SECTION_HEADER (Count: 3) (Size: 0x0028H<40B>)(ROF: 0x000001C0)
       Name       VSize               VAddress     SOfRawData   PToRawData 
00  .text           0x00004E3C   0x00001000  0x00005000   0x00001000 
01  .rdata        0x000008A8     0x00006000  0x00001000   0x00006000 
02  .data         0x00003E24    0x00007000  0x00003000  0x00007000 

看02 .data段
IMAGE_SECTION_HEADER.Misc.PhysicalAddress 是 0x00003E24
文件对齐是0x1000, 那么
IMAGE_SECTION_HEADER.SizeOfRawData 不应该是0x00004000吗?
为什么会是0x00003000


IMAGE_SECTION_HEADER..PointerToRawData 是 0x00007000
MAGE_SECTION_HEADER.SizeOfRawData 是0x00003000
文件大小是0x00007000 + 0x00003000 = 0x0000A000 = 40K 这个是正确的.


IMAGE_OPTIONAL_HEADER32.SizeOfImage是 0x0000B000;
使用OD加载该PE文件, .data段在内存中的大小是 0x00004000 (0x00007000--0x0000B000)
当然, 0x0000A000---0x0000B000这一段全是00的.

结论:
IMAGE_SECTION_HEADER.Misc.PhysicalAddress 应该是在内存中的没对齐时的大小(而不是文件中没对齐时的大小).
MAGE_SECTION_HEADER.SizeOfRawData 是在文件中对齐后的大小.
IMAGE_OPTIONAL_HEADER32.SizeOfImage 是PE文件加载到内存需要的内存大小.
这样理解, 这个PE文件不奇怪.

 

 

TestSwitch.rar:
 http://download.csdn.net/detail/cay22/4381945 
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值