Вот интересно с тем, когда физический адрес превышает виртуальный
Хакер писал(а):Тут надо смотреть чуть более хитро: размер секции в файле может быть меньшим, чем размер секции в памяти. Тогда «недостающая часть» не будет взята из файла. Так вот, если RVA попадает на такую uninitialized область, значит ему вообще не соответствует никакой физический адрес (смещение в файле)
Hard Wisdom в своём мануале писал(а):Physical Size может быть больше, чем Virtual Size. Это происходит, когда "умный" линкер заявляет строгий размер секции (не кратный Object Align). В таком случае хвост секции теоретически не используется.
Т.е. получается, если
- Код: Выделить всё
Physical_Size_Section > Virtual_Size_Section AND (Offset - Physical_Address_Section - Virtual_Size_Section) > 0
тогда выходит, что таблицы как бы не существет, т.е. ложно инициализированна?
И вот пару глупых вопросов:
1) т.к. имена функций в таблице экспорта хранятся в ASCIZ, то что бы считать их массив, нужно каждый элемент от смещения из таблицы считывать до 0x00?
2) также имеется в таблице экспорта имя нашей библиотеки. Зачем оно нужно если имя библиотеки = файл ?
3) также имются различные версии где только можно MajorVersion MinorVersion они играют какую-либо роль?