首页
社区
课程
招聘
[旧帖] [求助]关于文件偏移地址与虚拟地址转换的疑惑 0.00雪花
发表于: 2009-8-21 18:34 1645

[旧帖] [求助]关于文件偏移地址与虚拟地址转换的疑惑 0.00雪花

2009-8-21 18:34
1645
在<<加密与解密>>P-24页谈到了文件偏移地址与虚拟地址转换,有这样一段话:

文件区块有两种对齐值:一种是磁盘文件中的,另一种是内存的。PE文件被映射到内存时,区块总是至少以一个边界开始。也就是说,每个区块的第一个字节对应于某个内存页。在x86系统中,
每个内存页的大小是4KB,即0x1000个字节,所以在x86系统中,PE文件区块的内存对齐值一般等于0x1000,每个区块按0x1000之倍数的内存偏移位置开始。而磁盘对齐值一般取0x200,每个区块按0x200之倍数的文件偏移位置开始。

例如,本例文件的.text区块在磁盘文件中的起始偏移位置是0x400,当PE文件被装入内存后,将放在装入地址之上的0x1000位置处。同样,.rdata区块在磁盘文件中的起始偏移位置是0x800偏移处,PE文件被装入内存后,将放在装入地址之上的0x2000字节处。

我有几点不懂
1.什么是文件区块对齐?
2.上述文件转换,是如何实现的?

我想了好久,也没明白,希望大家能解释下,麻烦能详细点,在下感激不尽...

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1.文件区块对齐就是将区块空余位置用0填充
2.磁盘文件由加载器生成内存文件
2009-8-21 18:44
0
雪    币: 82
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
能说的在详细点么,上述那个.text文件的偏移位置转换过程,谢谢...
2009-8-21 18:46
0
雪    币: 179
活跃值: (26)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
大概就这个样子,不知道说的明白不。
上传的附件:
2009-8-21 20:07
0
雪    币: 82
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
非常感谢您的帮助     :)
2009-8-24 18:00
0
雪    币: 31
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
文件块对齐 意思是是说. 你在硬盘上的文件的对齐. 就是用16进制打开编译时的段对齐 一般设置为0x200
内存对齐.是说. 文件被加载到内存后. 会根据 可选头 的 SectionAlignment    把段从新对齐.

例如 .text 的开始数据在 0x400 处.  那么可能前边的头写完只用了200多字节. 那么根据对齐要对其到0x400处.  然后加载了之后 就会根据SectionAlignment     把.text 开始的数据移动到rva 1000处.
如果imagebase 是0x400000的话. 那么va就是0x401000了.

我也刚刚明白..不知道我明白的对么.. 呵呵
2009-8-25 20:21
0
游客
登录 | 注册 方可回帖
返回
//