Таблица импорта в PE (.exe) - PullRequest
4 голосов
/ 24 марта 2011

Я нашел указатель для поля «Таблица импорта». Который имеет размер 8 байт и делится на виртуальный адрес и размер. Однако значение в поле «Виртуальный адрес» слишком велико и вводит в заблуждение мои усилия по извлечению любой информации, касающейся местонахождения записей, относящихся к таблице импорта. Значение, указывающее на смещение, если файл (.exe) завершает работу до достижения желаемого смещения.

1 Ответ

9 голосов
/ 26 марта 2011

RVA (относительный виртуальный адрес) каталога импорта в таблице каталогов должен быть действительным.Возможно, ваше преобразование в физическое смещение не работает.Конечно, это делается путем обхода таблицы разделов, чтобы найти содержащий раздел.Затем вычтите начальный RVA этого раздела из целевого RVA.Затем просто добавьте физическое смещение сечения к этому результату.Это даст вам позицию в файле каталога импорта.Преобразования в и из RVA в физические смещения могут быть необходимы часто, если вы работаете с файлом на диске.При работе с образом в памяти иногда утилиты защиты изменяют или уничтожают части PE-заголовка в памяти, чтобы предотвратить сброс.

Как только вы попадете в каталог импорта, у вас все еще остается много работы.Быстрый Google показал лучшее объяснение, чем я мог бы написать здесь: http://sandsprite.com/CodeStuff/Understanding_imports.html

Я являюсь автором теперь «классического» PECompact, PEBundle (теперь прекращено) и других утилит для манипуляции PE.1006 *

...