首页
社区
课程
招聘
导入表地址问题
发表于: 2010-6-25 09:26 3491

导入表地址问题

2010-6-25 09:26
3491
mov     eax,[edi].OptionalHeader.DataDirectory[8].VirtualAddress

                ;此时eax为导入表rva地址

            invoke  _RVAToOffset,_lpFile,eax   

               ;此段子程序将rva地址转换为磁盘中文件中的偏移地址

            add     eax,_lpFile   

             ; ??这里不明白了, _lpFile为内存中文件起始地址。用磁盘中偏移加内存中起始   地 址,为什么这么用啊? 如果得到的是导入表的rva,那么第一句就已经得到了,为什么还要再这样加一次?

            mov     edi,eax

            assume  edi:ptr IMAGE_IMPORT_DESCRIPTOR

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
2
......
2010-6-25 09:40
0
雪    币: 360
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rol
3
哦,MapViewOfFile。
2010-6-25 09:43
0
雪    币: 156
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
rva和磁盘文件偏移地址不一样,看代码应该是把PE文件作为内存映像文件进行的加载,所以需要用内存起始地址+文件中偏移。

另外,如果是像LoadLibrary这样的加载,应该就需要使用RVA了。

个人理解,请大家指教~
2010-6-25 10:06
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
明白了,谢谢各位!map...的和 装载的地址不一样。rva是装载时的,map..时的和磁盘一样,没有发生对齐,所以不能用rva来说的。 谢谢各位!
2010-6-25 10:16
0
雪    币: 105
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fog
6
文件偏移+加载内存地址 = 加载到内存的真实地址
2010-6-30 10:07
0
游客
登录 | 注册 方可回帖
返回
//