能力值:
( LV4,RANK:50 )
2 楼
看手册
能力值:
( LV2,RANK:10 )
3 楼
小艾
看手册
哪个手册,能不能提供下名字
能力值:
( LV4,RANK:50 )
4 楼
https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format
能力值:
( LV2,RANK:10 )
5 楼
pe权威指南。
能力值:
( LV2,RANK:10 )
6 楼
小艾
https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format
谢谢
能力值:
( LV2,RANK:10 )
7 楼
寧靜致遠
pe权威指南。
这本书上没有吧,我有这本书,就是对着它学习的,确定没有找到相关内容,百度完,也只是说跟编译器有关啥的,没弄明白,才来论坛发帖求助的
能力值:
( LV2,RANK:10 )
8 楼
小艾
https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format
貌似上面也没有这部分的介绍啊,我搜了下,就只有简单的介绍了 .data
Initialized data (free format)
IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE
其他再没有介绍了
能力值:
( LV11,RANK:190 )
9 楼
VirtualSize只是一个数值而已,这个数值就是告诉windows,映射这个区段的时候给我多大的内存,你也可以改的更大(但是改小可能会出现问题,因为编译出来的VirtualSize的明确的,表示程序至少需要这么多的内存)。相当于静态分配内存。我猜你没见过VirtualSize为0或者RawSize为0的情况。。。
能力值:
( LV2,RANK:10 )
10 楼
zplusplus
VirtualSize只是一个数值而已,这个数值就是告诉windows,映射这个区段的时候给我多大的内存,你也可以改的更大(但是改小可能会出现问题,因为编译出来的VirtualSize的明确的,表示程 ...
谢谢大佬指点,我主要是想把一个运行的exe保存到文件里面,然后RawSize就这么大,那等于内存中VirtualSize大小的数据,会有一大部分不知道应该怎么保存到文件里面去,还是说那多出来的部分根本就不需要管它,直接存盘RawSize大小的那部分数据就可以了.
能力值:
( LV9,RANK:190 )
11 楼
内存有内存的对齐粒度,文件有文件对齐的粒度,记得内存对齐粒度应该一定要是文件对齐粒度的双倍数或相等值(他们之间关系是很紧密的),RawSize 只是指明该节有效数据的一个参考数,写数据到文件是要以这个数据的 文件对齐粒度长度来写的!
最后于 2019-1-10 20:28
被linziqingl编辑
,原因:
能力值:
( LV2,RANK:15 )
12 楼
VirtualSize和SizeOfRawData是其中两个比较重要的属性。根据微软对PE的规定,VirtualSize应该包含载入到内存的节大小,SizeOfRawData应该包含节在硬盘中的大小。Windows加载器使用VirtualSize和SizeOfRawData中的最小值将节数据映射到内存。如果SizeOfRawData大于VirtualSize,则仅将VirtualSize大小的数据复制入内存,忽略其余数据。
能力值:
( LV2,RANK:10 )
13 楼
恩,谢谢楼上的两位,差不多已经搞懂了,不再纠结这个问题了.
能力值:
( LV4,RANK:50 )
14 楼
https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format#section-table-section-headers
能力值:
( LV6,RANK:90 )
15 楼
DATA节里存储的是程序运行时所需的数据。这些数据在程序运行时是以内存地址形式访问。而编译时数据分几种(只读、读写、已初始化、未初始化等),编译器出于优化考虑,会将未初始化的数据所占空间偏移等预留出来(内存地址偏移),而由于这部分未初始化数据没有初值,所以没必须写入PE文件占用文件大小,所以就会出现你看到的情况。如果不是加壳软件等调整的话,你用PE工具看DATA节的FLAGS应该会包含未初始化数据
IMAGE_SCN_CNT_UNINITIALIZED_ DATA
的标记。
最后于 2019-1-17 10:16
被拍拖编辑
,原因: