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

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

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

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

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;
			}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶一下,我也想知道这个问题。高手请进
2010-1-14 21:18
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
RvaToPtr函数的返回值就是指针啊, 有什么好奇怪的
2010-1-15 09:01
0
雪    币: 666
活跃值: (186)
能力值: ( 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
活跃值: (186)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
7
正解。~~~~~~
2010-1-21 15:57
0
游客
登录 | 注册 方可回帖
返回
//