В настоящее время я пишу парсер/загрузчик PE. Я успешно загрузил PE файл в память с помощью стандартного c файла io, извлечил действительные заголовки DOS и PE (дополнительный заголовок), а также получил доступ к разделам PE. Моя следующая цель - получить доступ к таблице Экспорт для получения экспортированных символов. Для этого я использовал RVA, хранящийся в дополнительном массиве данных-словаря заголовков с индексом 0 (который, я полагаю, указывает на таблицу экспорта), и добавил этот адрес к адресу PE файла, загруженного в память программы, затем перебросил его в допустимый заголовок таблицы экспорта. Когда я делаю это, я запускаю NULL-адреса и данные. вот небольшой фрагмент кода;
// RVA from optional headers data dictionaries array cast to Export directory type
IMAGE_EXPORT_DIRECTORY* ied(
(IMAGE_EXPORT_DIRECTORY*)((void*)
((unsigned char*)buffer + ioh->DataDirectory[0].VirtualAddress)));
Нужно ли мне использовать IO с отображением карты памяти, чтобы сделать это правильно? Я неправильно вычисляю адрес? Информация о PE RVA кажется редкой. спасибо заранее.