朱朱你堕落了 发表于 2023-10-26 15:28

问个简单的PE结构区段的小问题

如图:
https://im.gurl.eu.org/file/4e5b0527f3d880b841b75.png

UPX0区段大小(RAW Size)为什么是0呢?不应该有个具体的数值吗?
UPX0和UPX1区段在物理磁盘上的偏移都是0x400,为什么会这样?
理解不了。

软件:
https://www.123pan.com/s/YL29-Oj6Oh.html

lies2014 发表于 2023-10-26 15:28

真正的代码被压缩放在区段upx1,解压后写入upx0, 解压结束跳转到oep,物理磁盘上upx0就是空的,因此 RAW Size 为0,区段偏移与下一区段一样
但在内存里还是为这个区段设置了空间的,也就是 Virtual size 的大小

JuncoJet 发表于 2023-10-26 16:39

一种申请内存的技巧,物理大小0,虚拟大小申请内存大小

cndml 发表于 2023-10-31 08:50

物理大小其实就是静态数据,pe文件加载的时候,要根据虚拟大小分配内存,然后根据物理大小,把静态数据映射到虚拟内存。虚拟内存是软件运行的真实结构及大小,是不能改变的,对齐长度文件头里有要求一般是1000h或2000h字节。物理大小是可以从每个段的尾部删除全0数据的,但要保证文件块对齐,一般是200h字节对齐。优化文件大小就是删除段尾无用的0,一个区段如果是全0,存储到硬盘上就可以只存储运行时虚拟大小,而不必存储任何数据,pe加载的时候会自动清理内存,这个不是很好理解的吗
页: [1]
查看完整版本: 问个简单的PE结构区段的小问题