Пытаюсь получить PIMAGE_EXPORT_DIRECTORY и смещения - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь разобрать PE-файл, я могу извлечь некоторую информацию, но не PIMAGE_EXPORT_DIRECTORY. Что я делаю не так? Я пытаюсь получить как смещение, так и значение.

bool InfoPE(const char* dllFile)
    {
        IMAGE_NT_HEADERS*       pNtHeaders;
        IMAGE_OPTIONAL_HEADER*  pOptionalHeader;
        IMAGE_FILE_HEADER*      pFileHeader;
        BYTE*                   pTargetBase;

        std::ifstream File(dllFile, std::ios::binary | std::ios::ate);

        auto FileSize = File.tellg();

        std::allocator<BYTE> alloc;
        BYTE* pSrcData = alloc.allocate(static_cast<UINT_PTR>(FileSize));

        File.seekg(0, std::ios::beg);
        File.read(reinterpret_cast<char*>(pSrcData), FileSize);
        File.close();

        pNtHeaders = reinterpret_cast<IMAGE_NT_HEADERS*>(pSrcData + reinterpret_cast<IMAGE_DOS_HEADER*>(pSrcData)->e_lfanew);

        pOptionalHeader = &pNtHeaders->OptionalHeader;
        pFileHeader = &pNtHeaders->FileHeader;

        IMAGE_DATA_DIRECTORY* dataDirectory;
        dataDirectory = pOptionalHeader->DataDirectory;

        DWORD exportDirRVA      = dataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
        DWORD exportDirSize     = dataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size;

        // Trying to get offsets and values, but it fails here
auto pimage_export_directory = reinterpret_cast<PIMAGE_EXPORT_DIRECTORY>(pSrcData + exportDirRVA);

        return true;
    }

enter image description here

Изменить: О, и есть функция экспорта в DLL, которую я тестирую с:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...