У меня есть вопрос о смещениях в файлах. Например, расширение «.exe»/файл, когда вы открываете такой файл.Файлы адресов памяти
handle = open('file.exe', mode='rb')
Теперь, когда вы пытаетесь получить доступ к 10-му байту, вы можете использовать функцию поиска.
handle.seek(10, 0)
Множество значений в заголовке PE является РОВ, а это означает ImageBase + ООА этого смещения при загрузке в памяти. Проблема в том, что вы не можете искать это значение. Например:
. Раздел istata имеет виртуальный адрес (RVA) и необработанный адрес (на основе изображения). Теперь с помощью предыдущего метода вы можете использовать необработанный адрес для чтения с правильным смещением. Для множества значений предоставляется только RVA, для которого он не работает.
Открытие файла таким образом начинается с 0, когда загружается в память, в большинстве случаев база данных равна 0x00400000. Есть ли способ загрузить файл в память и, таким образом, использовать точные значения смещения, когда он загружается в память? Итак, вместо 0 файл начинается с базы данных, чтобы вы могли искать RVA?
с Направлениями С уважением,
Обратите внимание, что вы не «загружаете [исполняемый] файл в память» - ОС работает. Я думаю, что нет окончательного ответа на этот вопрос - см. [Рандомизация адресной памяти] (https://en.wikipedia.org/wiki/Address_space_layout_randomization) – goncalopp