Beispiel #1
0
PIMAGE_DATA_DIRECTORY CPEFile::GetDataDirectory()
{
    PIMAGE_OPTIONAL_HEADER32 pOptionalHeader = GetNtOptionalHeader();
    if (pOptionalHeader)
        return (PIMAGE_DATA_DIRECTORY) pOptionalHeader->DataDirectory;

    return NULL;
}
Beispiel #2
0
void CPEReloc::DeleteReloc()
{
    PIMAGE_OPTIONAL_HEADER32 NtOptionHead = GetNtOptionalHeader();
    IMAGE_DATA_DIRECTORY DataReloc = NtOptionHead->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC];
    if (DataReloc.VirtualAddress == 0)
        return;
    PIMAGE_BASE_RELOCATION pLoc = (PIMAGE_BASE_RELOCATION)
        VaToPtr(NtOptionHead->ImageBase + DataReloc.VirtualAddress);
    pLoc->VirtualAddress = 0;
    pLoc->SizeOfBlock = 0;
}
Beispiel #3
0
DWORD CPEReloc::GetBaseReloc() 
{
   PIMAGE_OPTIONAL_HEADER32 NtOptionHead = GetNtOptionalHeader();
   IMAGE_DATA_DIRECTORY Roc = NtOptionHead->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC];
       return Roc.VirtualAddress;
}
Beispiel #4
0
void * CPEFile::VaToPtr(DWORD dwVA)
{
    PIMAGE_NT_HEADERS32 pNth = GetNtHeader();
    DWORD dwRVA = dwVA-GetNtOptionalHeader()->ImageBase;
    return ImageRvaToVa(pNth,m_pFile->ImageBase,dwRVA,NULL);
}