首页
社区
课程
招聘
[求助]PE格式中的两个问题
发表于: 2015-9-23 11:40 5275

[求助]PE格式中的两个问题

2015-9-23 11:40
5275
1.数据目录表中的IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTR与IMAGE_OPTIONAL_HEADER里的NumberOfRvaAndSizes有什么关系?
2.IMAGE_FILE_HEADER结构中的Machine里面的值“具体”指的是什么意思?是编译该PE文件时的平台环境?还是运行该PE文件的平台环境?还是说CPU类型

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 1258
活跃值: (1434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Machine:可执行文件的目标CPU类型。
2015-9-23 14:08
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
目标cpu类型指的是什么?是在编译的时候还是再执行的时候?
2015-9-23 14:31
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
加载的时候,加载器去判断的
2015-9-23 14:59
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
哦,多谢,那第一个问题能否给出相应解释?
2015-9-23 15:20
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
应该说两个东西没啥大关系
NumberOfRvaAndSizes值恒等于16(0x10),里面包括输出表、输入表、资源、、、COM、保留
2015-9-23 16:01
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
我在一个加壳的文章中看到这么一段
if (Image_DIRECTOYR_ENTRY_COM_DESCRIPTOR< NumberOfRvaAndSizes)                //如果数据目录项数大于IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR(不明白为什么这么判断)
                                {
                                        if (IMAGE_FILE_MACHINE_AMD64 == pNt->FileHeader.Machine)       
                                        {
                                                pDataDir->VirtualAddress = ((PIMAGE_OPTIONAL_HEADER64)pOpt)->DataDirectory[iIndex].VirtualAddress;
                                                pDataDir->Size = ((PIMAGE_OPTIONAL_HEADER64)pOpt)->DataDirectory[iIndex].Size;
                                                bRet = true;
                                        }
                                        else if (IMAGE_FILE_MACHINE_I386 == pNt->FileHeader.Machine)
                                        {
                                                pDataDir->Size = pOpt->DataDirectory[iIndex].Size;                //为pDataDir所指向的IMAGE_DATD_DIRECTORY结构中的大小赋值
                                                pDataDir->VirtualAddress = pOpt->DataDirectory[iIndex].VirtualAddress;        //为pDataDir所指向的IMAGE_DATD_DIRECTORY结构中的数据RVA赋值
                                                bRet = true;
                                        }

这里不明白为什么判断二者关系
2015-9-23 16:30
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
NumberOfRvaAndSizes不一定等于 16的,  有可能小一些。  表示数据目录中有效的项的个数。
2015-9-23 19:51
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
那请问,它与IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTR有什么关系?IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTR好像也是个固定值--14;
2015-9-23 20:08
0
雪    币: 29209
活跃值: (7714)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
10
..
NumberOfRvaAndSizes表示数据目录中有效的项的个数
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR为数据目录最后一个有意义的项
这样判断不是挺正常的么
2015-9-23 22:27
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主注册时间很早啊..怎么突然又搞PE了
2015-9-23 22:50
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
别人给的号,亲,能否帮忙解答上诉问题?
2015-9-24 12:11
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
第一个问题中的判断是有意义的,就是判断要做赋值的结构是否在最大数量范围内
2015-9-24 19:18
0
游客
登录 | 注册 方可回帖
返回
//