Как сопоставить смещение файла в EXE к его разделу PE - PullRequest
2 голосов
/ 06 августа 2010

Я открыл программу, которую написал с помощью ImageHlp.dll, чтобы немного поиграть с ней, и заметил, что в файле, похоже, большие пробелы. Насколько я понимаю, для каждого раздела PE заголовок раздела дает свое смещение в файле как PhysicalAddress, а его размер как SizeOfRawData, и, следовательно, все от PhysicalAddress до PhysicalAddress + SizeOfRawData должно быть этим разделом. Но существуют большие полосы EXE-файла, которые не охватываются этими диапазонами, поэтому я должен что-то упустить.

Я знаю, что могу использовать ImageRVAToSection и дать ему RVA-адрес, чтобы узнать, в каком разделе находится RVA. Есть ли способ сделать что-то подобное со смещениями файлов? Как я могу узнать, к какому байту секции PE $ ED178 или что принадлежит?

Ответы [ 2 ]

1 голос
/ 06 августа 2010

Редактировать: Извините, я недостаточно внимательно прочитал ваш вопрос.

Когда я смотрю, я нахожу несколько файлов, как вы упоминали, что данные в заголовках раздела не покрываютвсе содержимое файла.Большинство из тех, что я обнаружил, содержат отладочную запись, которая не рассматривается.Есть несколько других с расхождениями, которые я пока не смог выяснить.Когда / если я смогу узнать больше, я добавлю это.

0 голосов
/ 06 августа 2010

Я написал в Как использовать VirtualAllocEx, чтобы освободить место для кодовой пещеры? фрагмент кода, который проверяет PE , загруженные в текущий момент в памяти. Вероятно, вы найдете ответ на свой вопрос, если сравните содержимое DLL в памяти с содержимым на диске (на котором показан файл ImageHlp.dll).

...