首页
社区
课程
招聘
未解决 [求助]基址重定位表的RVA和导入表的RVA都比PE文件大是怎么回事?
发表于: 2019-11-13 19:03 2422

未解决 [求助]基址重定位表的RVA和导入表的RVA都比PE文件大是怎么回事?

2019-11-13 19:03
2422
基址重定位表的RVA和导入表的RVA都比PE文件大是怎么回事,文件大小只有9216bytes,就不能通过RVA,也就是文件偏移来找到导入表的位置和重定位表了,有人能解释一下吗?非常感谢了。

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

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 7373
活跃值: (4075)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找出这两个表在哪个区段然后计算出相对于区段的偏移,这个偏移加上这两个表所属区段在文件中的位置就是你想要的了,内存里映像大小比文件大小要大很正常
2019-11-13 22:34
0
雪    币: 257
活跃值: (194)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
3
htpidk 找出这两个表在哪个区段然后计算出相对于区段的偏移,这个偏移加上这两个表所属区段在文件中的位置就是你想要的了,内存里映像大小比文件大小要大很正常
我看书和别人的参考是这样的:IMAGE_BASE_RELOCATION数据的位置位于PE文件DataDirectory[5]的RVA记录的文件偏移处,这样对吗?这里实在不是很懂,还请多多指教一下。或者我这样问:怎么在PE文件中确定IMAGE_BASE_RELOCATION结构体的位置。谢谢你了。
2019-11-13 22:58
0
雪    币: 7373
活跃值: (4075)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
就以这个dll为例,重定位表的RVA是0x44120,再看文件的区段信息

很明显0x44120 是在.rsrc区段,而且相对于这个区段的偏移是44120-44000=120,而这个区段在文件中的偏移是0x8000,因此重定位表在文件中的偏移是8000+120=8120
2019-11-13 23:13
0
雪    币: 7373
活跃值: (4075)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
因为对齐原因,所以文件在硬盘的大小比在内存中的大小要小很正常。RVA和FOA互相转换时,只要找到该表所属的区段即可,表相对于区段的偏移不管是在内存里还是文件里都是一样的
2019-11-13 23:17
0
游客
登录 | 注册 方可回帖
返回
//