我正在查看一个包含UPX的PE可执行文件,这些部分的布局如下:
UPX0:raw addr: 0x400 ,原始大小: 0x0 ,虚拟地址:0x1000,虚拟大小:0x6000
UPX1:原始地址: 0x400 ,原始大小:0xC00,虚拟地址:0x7000,虚拟大小:0x1000
UPX0部分的原始大小为零,与UPX1具有相同的原始地址。我的问题是,当PE可执行文件加载到内存中时,哪些数据会进入UPX0部分?
根据我读过的其他信息,当虚拟大小大于某个部分的原始大小时,Windows加载程序会填充0的部分。由于UPX0的原始大小为0,这是否意味着在加载可执行文件时,整个部分最初填充为0?或虚拟地址0x1000 - 0x1C00(UPX0)填充与虚拟地址0x7000 - 0x7C00(UPX1)相同的数据,地址0x1C01 - 0x6FFF(UPX0)填充0吗?还是会发生其他事情?