首页
社区
课程
招聘
[旧帖] [PE文件]PointerToRawData和数据在文件中的真正偏移位置 0.00雪花
发表于: 2011-8-5 10:25 4331

[旧帖] [PE文件]PointerToRawData和数据在文件中的真正偏移位置 0.00雪花

2011-8-5 10:25
4331
《加密解密》读取PE文件中的资源没看懂

原文:
使用RVA,使文件装入内存后的数据定位变得方便,然而却给处理磁盘上的静态PE文件带来了很大的麻烦,举例来说,假如要读取PE文件中的资源(如图17.3中的A所示),第一个步骤就是从PE文件头的数据目录中访问第3个IMAGE_DATA_DIRECTORY结构,并从结构中得到资源所处的偏移量,但是这样得到的偏移量是个RVA,它只能用于在内存中查找由A'位置所指示的资源。用它直接在磁盘文件中定位A位置是错误的。
当处理PE文件时,任何的RVA必须经过到文件偏移的换算,才能用来定位并访问文件中的数据,但换算却无法用一个简单的公式来完成,事实上,惟一可用的方法就是最土最笨的方法:
(1)循环扫描节表并得到每个节在内存中的起始RVA(根据VirtualAddress字段),并根据节的大小(SizeOfRawData字段)算出节的结束RVA,最后比较判断目标RVA是否落在某个节之内。
(2)如果目标RVA处于某个节之内,那么用目标RVA减去节的起始RVA,这样就得到了目标RVA相对于节起始地址的偏移量RVA'。
(3)在节表中获取节在文件中所处的偏移PointerToRawData,将这个偏移值加上上一步得到的RVA'值,这才是数据在文件中的真正偏移位置。

问题:PointerToRawData的实际含义是什么啊?  它不是数据在文件中的真正偏移位置吗?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//