问个简单的PE结构区段的小问题
如图:https://im.gurl.eu.org/file/4e5b0527f3d880b841b75.png
UPX0区段大小(RAW Size)为什么是0呢?不应该有个具体的数值吗?
UPX0和UPX1区段在物理磁盘上的偏移都是0x400,为什么会这样?
理解不了。
软件:
https://www.123pan.com/s/YL29-Oj6Oh.html 真正的代码被压缩放在区段upx1,解压后写入upx0, 解压结束跳转到oep,物理磁盘上upx0就是空的,因此 RAW Size 为0,区段偏移与下一区段一样
但在内存里还是为这个区段设置了空间的,也就是 Virtual size 的大小 一种申请内存的技巧,物理大小0,虚拟大小申请内存大小 物理大小其实就是静态数据,pe文件加载的时候,要根据虚拟大小分配内存,然后根据物理大小,把静态数据映射到虚拟内存。虚拟内存是软件运行的真实结构及大小,是不能改变的,对齐长度文件头里有要求一般是1000h或2000h字节。物理大小是可以从每个段的尾部删除全0数据的,但要保证文件块对齐,一般是200h字节对齐。优化文件大小就是删除段尾无用的0,一个区段如果是全0,存储到硬盘上就可以只存储运行时虚拟大小,而不必存储任何数据,pe加载的时候会自动清理内存,这个不是很好理解的吗
页:
[1]