首页
社区
课程
招聘
《加密与解密》PE文件格式那章的问题
发表于: 2010-1-14 21:12 4009

《加密与解密》PE文件格式那章的问题

2010-1-14 21:12
4009
在编写PE文件分析工具那里,有一个ShowExportFuncsinfo,
这里
1
pwOrds    = (PWORD)RvaToPtr(pNtH, stMapFile.ImageBase,pExportDir->AddressOfNameOrdinals);

为什么要定义成PWORD?AddressOfNameOrdinals不是DWORD类型的么?为哈么用WORD类型的指针?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pwOrds    = (PWORD)RvaToPtr(pNtH, stMapFile.ImageBase,pExportDir->AddressOfNameOrdinals);
    pdwRvas   = (PDWORD)RvaToPtr(pNtH, stMapFile.ImageBase,pExportDir->AddressOfFunctions);          //va
    pdwNames  = (PDWORD)RvaToPtr(pNtH, stMapFile.ImageBase,pExportDir->AddressOfNames);
 
    if(!pdwRvas)
        return;
   
    hList=GetDlgItem(hDlg,IDC_EXPORT_LIST);
    SendMessage(hList,LVM_SETEXTENDEDLISTVIEWSTYLE,0,(LPARAM)LVS_EX_FULLROWSELECT);
         
     
    iNumOfName=pExportDir->NumberOfNames;
 
    for( i=0;i<pExportDir->NumberOfFunctions;i++)       //i<AddressOfFunctions 中个元素个数
    {
        if(*pdwRvas)                         //AddressOfFunctions  VA != NULL
        {   
            for( j=0;j<iNumOfName;j++)                  // j < NumberOfNames
            {
                if(i==pwOrds[j])               //pwOrds is a pointer to AddressOfNameOrdinals
                
                    bIsByName=TRUE;
                    szFuncName=(char*)RvaToPtr(pNtH,stMapFile.ImageBase,pdwNames[j]);
                    break;
                }
                 
                bIsByName=FALSE;
            }

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (6)
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶一下,我也想知道这个问题。高手请进
2010-1-14 21:18
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
RvaToPtr函数的返回值就是指针啊, 有什么好奇怪的
2010-1-15 09:01
0
雪    币: 666
活跃值: (201)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
4
我想你是不是把 AddressOfNameOrdinals 的数据类型 和 它作为指针所指向的数据类型搞混了?前者是一个指针,数据类型是 DWORD,后者是一个 index 值,数据类型是 WORD.
AddressOfNameOrdinals:
An RVA that points to a 16-bit array that contains the ordinals associated with the function names in the AddressOfNames array above.
2010-1-15 13:42
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kzj
5
我想知道的是为什么要返回PWORD类型的指针而不是PDWORD类型
2010-1-15 13:49
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kzj
6
这个明白了。AddressOfNameOrdinals是DWORD类型的,他指向WORD类型的值?
2010-1-15 13:50
0
雪    币: 666
活跃值: (201)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
7
正解。~~~~~~
2010-1-21 15:57
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册