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

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

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

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 1257
活跃值: (1424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yllen 2015-9-23 14:08
2
0
Machine:可执行文件的目标CPU类型。
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
dogwang 4 2015-9-23 14:31
3
0
目标cpu类型指的是什么?是在编译的时候还是再执行的时候?
雪    币: 293
活跃值: (232)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
瀚海云烟 1 2015-9-23 14:59
4
0
加载的时候,加载器去判断的
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
dogwang 4 2015-9-23 15:20
5
0
哦,多谢,那第一个问题能否给出相应解释?
雪    币: 293
活跃值: (232)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
瀚海云烟 1 2015-9-23 16:01
6
0
应该说两个东西没啥大关系
NumberOfRvaAndSizes值恒等于16(0x10),里面包括输出表、输入表、资源、、、COM、保留
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
dogwang 4 2015-9-23 16:30
7
0
我在一个加壳的文章中看到这么一段
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;
                                        }

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