首页
社区
课程
招聘
[求助]BaseOfCode和PointerToRawData的区别?
发表于: 2008-2-22 23:22 6162

[求助]BaseOfCode和PointerToRawData的区别?

2008-2-22 23:22
6162
有以下定义

typedef struct PE_HEADER_MAP 

DWORD signature; 
IMAGE_FILE_HEADER _head; 
IMAGE_OPTIONAL_HEADER opt_head; 
IMAGE_SECTION_HEADER section_header[]; 
} peHeader; 

peHeader * header;


我的问题是header->opt_head.BaseOfCode 和header->section_header[0].PointerToRawData 有何区别?
我画图都画不出来,望大虾可以画一个给我看看……

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
msy
2
不是吧?小菜般的问题居然都没有人站出来回答?
顶到大侠来为之~
2008-2-23 17:14
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
2008-2-23 17:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
msy
4
2C DWORD BaseOfCode RVA of first byte of code when loaded into RAM
14 DWORD pointerToRawData  Raw offset of section on disk
一个是在硬盘中的偏移,一个是内存中的偏移,不知对否?
虽然好理解,但是放到程序中一运算就晕了
2008-2-23 18:19
0
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
5
BaseOfCode是指代码节在内存中的偏移(如果是exe就是内存地址-ImageBase)
PointerToRawData是指该节在文件中的偏移地址(从文件头开始一个字节一个字节数,数到这一节的那个值)
可以借助study pe或者peditor等工具学习pe结构,然后看下看雪精华中的一些pediy实例就好了.
2008-2-24 02:12
0
雪    币: 297
活跃值: (27)
能力值: ( LV13,RANK:380 )
在线值:
发帖
回帖
粉丝
6
PE文件格式中有些域可以适用于其它文件类型,或者被MS废弃。
这样的话,有些域对于exe文件来说就是不可信的。
BaseOfCode就是这样的一个数据域
你可以简单地忽略这个数据域,不应该把它作为可信的数据。在编程中也不应该依赖BaseOfCode这个数据域。
你可以作一个简单地实验:在windows下,不管它是0x0,还是0xffffffff,对exe文件的运行都没有任何影响。
2008-2-24 20:56
0
雪    币: 173
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
BaseOfCode纯粹是给人看得..
2008-2-24 20:58
0
游客
登录 | 注册 方可回帖
返回
//