BP писал(а):Как это число использует загрузчик?
Относительный (относительно Image base) адрес.
загрузчик использует это число для нахождения сегмента в файле
Function TABLE_PhysicalOffset(TABLE_RVA As Long) As Long
'TABLE_RVA - Смещение к таблице в PE-заголовке
' (находится в PE_HEADER.Export_Table_RVA, .Import_Table_RVA, .Resource_Table_RVA...
' всего 16 таблиц)
'----------
'SectionRVA - Смещение к очередной секции
' (берётся из таблицы этой секции OBJHDR.SectionRVA)
'--------------
'PhysicalOffset - Реальное смещение к очередной секции в файле
' относительно начала файла
Dim SectionAddr_RVA As Long, SectionAddr_File As Long
For EnumSections = 1 To UBound(Sections)
'Проверить находится ли искомый RVA в диапазоне адресов конкретной секции
If TABLE_RVA >= Sections(EnumSections).SectionRVA And TABLE_RVA <= Sections(EnumSections).SectionRVA + Sections(EnumSections).VirtualSize Then
'Смещение в файле = RVA - (RVA начала секции) + (Смещение к началу секции в файле)
TABLE_PhysicalOffset = TABLE_RVA - Sections(EnumSections).SectionRVA + Sections(EnumSections).PhysicalOffset
End If
Next EnumSections
End Function
абсолютная виртуальная адресация (VA), а относительная (RVA)
вот вам мануал по формату PE
BP писал(а):Относительный (относительно Image base) адрес.
Ну прочесть это я и сам смог (по твоим источникам кстати).
Но вот связать RVA c Image base (чаще всего &H400000) никак не получается.
загрузчик использует это число для нахождения сегмента в файле
Под сегментом ты имел ввиду секции?
Если уж совсем в общем, то нахрен этот RVA нужен? Не, ну он конечно нужен (наверное) вот только зачем? Может это разница между выравниваниями в памяти и в файле? А может он како то хитро суммируется с Image Base? Или может с точкой входа какая связь?
Блуждаю вот блуждаю, а решение как у GSerg'a - очевидно для всех, кроме меня.
GSerg писал(а):И вообще, вот вам мануал по формату PE на русском языке, там всё красиво
BP писал(а):А как создать самому этот RVA? Есть какая то формула?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1