luoluoovo 发表于 2019-11-14 21:44

文件偏移地址计算

本帖最后由 luoluoovo 于 2019-11-14 22:41 编辑

虚拟内存地址是0x4010D4 ,装载基址是0x400000
VOffset是1000h
ROffset是200h

文件偏移地址=虚拟内存地址-装载基址-(文件虚拟地址偏移量-文件物理地址偏移量) =0x4010D4-0x400000(1000h-200h)=0x8D4


结果在16进制中查的0x8D4 不是虚拟内存地址0x4010D4的数据。


而在0x2D4中查到了虚拟内存地址0x4010D4的数据。

请问为什么会这样呢,计算应该没错阿。

苏紫方璇 发表于 2019-11-14 22:24

本帖最后由 苏紫方璇 于 2019-11-14 22:51 编辑

0x4010D4-0x400000 -(1000h-200h)
=10D4-E00h
=2D4

luoluoovo 发表于 2019-11-14 22:40

苏紫方璇 发表于 2019-11-14 22:24
0x4010D4-0x400000 -(1000h-200h)
=10D4-800h
=2D4

一开始算错了。1000h-200h是等于E00

唐马儒先生 发表于 2019-11-14 22:44

计算方法有两个,你用的是其中一个。还有一个我感觉更方便。
首先,
虚拟地址-装在地址=0x4010D4-0x400000=0x10D4

查看区段,看看这个0x10D4在哪个区段的VOffset下。
根据你的图片,明显是.text(0x10000)。
然后用0x10D4-0x10000=0xD4。在用这个偏移加上.text对应的ROffset(0x200)就得到了VOA
VOA=0x200+0xD4=0x2D4

苏紫方璇 发表于 2019-11-14 22:50

luoluoovo 发表于 2019-11-14 22:40
一开始算错了。1000h-200h是等于E00

我也犯二算错了{:1_924:}

houtbin 发表于 2019-11-14 22:54

学习一下 ,,,,

xieyong 发表于 2019-11-21 09:33

0

一开始算错了。1000h-200h是等于E00

我也犯二算错了计算方法有两个,你用的是其中一个。还有一个我感觉更方便。

首先,

虚拟地址-装在地址=0x4010D4-0x400000=0x10D4



查看区段,看看这个0x10D4在哪个区段的VOffset下。

根据你的图片,明显是.text(0x10000)。
页: [1]
查看完整版本: 文件偏移地址计算