FOAToRVA
DWORD FOAToRVA(LPVOID pFileBuffer,DWORD dwRva)
{
int i;
if(dwRva<pSectionHeader->PointerToRawData)
{
return dwRva;
}
for(i=0;i<pFileHeader->NumberOfSections;i++)
{
if((dwRva>=pSectionHeader->PointerToRawData)&&
(dwRva<(pSectionHeader->PointerToRawData+pSectionHeader->SizeOfRawData)))
{
dwRva=pSectionHeader->VirtualAddress+dwRva-pSectionHeader->PointerToRawData;
pSectionHeader=(PIMAGE_SECTION_HEADER)((DWORD)pOptionHeader+pFileHeader->SizeOfOptionalHeader);
return dwRva;
}
pSectionHeader++;
}
}
RVAToFOA
DWORD RVAToFOA(LPVOID pFileBuffer,DWORD dwRva)
{
int i;
if(dwRva<pSectionHeader->VirtualAddress){
return dwRva;
}
for(i=0;i<pFileHeader->NumberOfSections;i++)
{
if((dwRva>=pSectionHeader->VirtualAddress)&&
(dwRva<(pSectionHeader->VirtualAddress+pSectionHeader->SizeOfRawData)))
{
dwRva=pSectionHeader->PointerToRawData+dwRva-pSectionHeader->VirtualAddress;
pSectionHeader=(PIMAGE_SECTION_HEADER)((DWORD)pOptionHeader+pFileHeader->SizeOfOptionalHeader);
return dwRva;
}
pSectionHeader++;
}
}