首页
社区
课程
招聘
[求助]关于使用CreateFileMapping把PE文件映射到进程地址空间中的问题
发表于: 2013-2-21 10:57 7749

[求助]关于使用CreateFileMapping把PE文件映射到进程地址空间中的问题

2013-2-21 10:57
7749
在磁盘和内存对齐粒度一样的情况下RVA和文件偏移相等,那么CreateFileMapping把PE文件映射到进程地址空间中的时候是直接按照磁盘原数据位置分布在进程地址空间中呢,还是经过内存粒度对齐之后分布在空间中呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 12
活跃值: (773)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
按磁盘的吧,要是自动处理rva和va就神奇了。。
2013-2-21 12:50
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
如果LZ仅仅使用CreateFileMapping将PE文件映射到内存的话,肯定是和磁盘里的是一样的结构和长度!
这个时候CreateFileMapping仅仅只是将PE程序当做一个普通的磁盘文件在操作的,和txt文件没为什么不同。
2013-2-21 13:54
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也是这么猜测的,如果转换成内存粒度对齐的话,那RVA转文件偏移就没有意义了
2013-2-21 14:02
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
用CreateFileMapping为一个PE文件创建内存映射并且第三个参数包含SEC_IMAGE标志时,映射后的内存文件会按内存粒度和节中指定的VA对齐~  此时内存中的布局和磁盘上的通常不一样,因为一般情况下内存对齐粒度比磁盘对齐粒度大~
2013-2-21 20:27
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个标志时标记映射的是可执行文件,那如果不加SEC_IMAGE标志就是跟磁盘文件数据分布是一样的?
2013-2-22 09:38
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
这没注意过其他参数,都是用例子里带的直接cpoy
2013-2-22 10:21
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
不加就和磁盘上一样,相当于一个普通的数据文件,加了就不一样了~
2013-2-22 13:04
0
游客
登录 | 注册 方可回帖
返回
//