首页
社区
课程
招聘
[求助]如何使用RVA获得FileOffSet值
发表于: 2010-3-18 20:29 4799

[求助]如何使用RVA获得FileOffSet值

2010-3-18 20:29
4799
问个简单的问题, 现用CreateFile()函数打开一个PE文件, 已经获得了IMAGE_IMPORT_DESCRIPTOR 结构, 得到了Name1字段的RVA值, 现想用ReadFile()函数读取文件名, 也就是要获取文件偏移地址, 下面是我写的, 但是不知道为什么数据会读不出来...
DWORD GetReadStart(DWORD * VirtualAddress)
{
	int readnum = 0;
	int lasterror = 0;
	int OffSize = 0;
	OffSize = HeadersSize - fileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER);  //HeaderSize是整个文件头的大小
	SetFilePointer(hFile, OffSize, NULL, FILE_BEGIN);//将文件指针设置到第一个节表处
	for (int i = 1; i <= fileHeader.NumberOfSections; i ++)
	{
     if (ReadFile(hFile, m_psecHeader, sizeof(IMAGE_SECTION_HEADER), (LPDWORD)&readnum, NULL))
	 {
		 if ((*VirtualAddress) >= m_psecHeader->VirtualAddress && 
			(*VirtualAddress) < (m_psecHeader->VirtualAddress + m_psecHeader->SizeOfRawData))
		   return m_psecHeader->PointerToRawData + (*VirtualAddress) - m_psecHeader->VirtualAddress;
	 }
	 else
	 {
		 MessageBox(GetActiveWindow(), TEXT("Can't read section header"), NULL, MB_OK);
		 return FALSE;
	 }
	}
	MessageBox(GetActiveWindow(), TEXT("Can't find section"), NULL, MB_OK);
	return 0;
}

下面是调用该函数
//ImportDescriptor是一个IMAGE_IMPORT_DESCRIPTOR结构.
		ReadStart = GetReadStart(&ImportDescriptor.Name);
        SetFilePointer(hFile, ReadStart, NULL, FILE_BEGIN);
		//len = strlen(szTemp);
		if (!ReadFile(hFile, &szTemp[strlen(szTemp)], 20, (LPDWORD)&readnum, NULL))

现ReadFile()函数的返回值为1, 想不明白是咋回事啊
还望哪位大虾赐教下..

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 173
活跃值: (132)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
ImportDescriptor.Name该值已经用LoadPe确认过, 是正确的.
2010-3-18 20:33
0
雪    币: 75
活跃值: (623)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
ReadFile(hFile, &szTemp[strlen(szTemp)], 20, (LPDWORD)&readnum, NULL)
字符数组是不是前面使用过哦
2010-3-18 21:56
0
雪    币: 173
活跃值: (132)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
刚才试了下, 即使使用一个新的变量来存放name也不行, 所以&szTemp[strlen(szTemp)]这个应该没关系的, 它只是表示的是一个地址, ReadFile()只需将数据拷贝到这个地址中就可以了...
2010-3-18 23:40
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
http://blog.cnnwm.com/read.php?tid=286
2010-3-20 15:17
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
贴出来的代码 好像没什么问题
2010-3-20 15:19
0
游客
登录 | 注册 方可回帖
返回
//