|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 7, 2004 16:12:59 Добрый день. Вопрос относится к таблице секций PE-файла. В файле windows.inc структура IMAGE_SECTION_HEADER имеет вид : IMAGE_SECTION_HEADER STRUCT Name1 db IMAGE_SIZEOF_SHORT_NAME dup(?) union Misc PhysicalAddress dd ? VirtualSize dd ? ends VirtualAddress dd ? SizeOfRawData dd ? PointerToRawData dd ? PointerToRelocations dd ? PointerToLinenumbers dd ? NumberOfRelocations dw ? NumberOfLinenumbers dw ? Characteristics dd ? IMAGE_SECTION_HEADER ENDS В "Формат исполняемых файлов PE , Hard Wisdom" в коментарии к полю Name1 читаем: "Object Name - Имя объекта, остаток заполнен нулями, если имя объекта имеет длину 8 символов, то заключительного 0 нет. Некоторые PE дамперы падают на этом факте. Имя - штука отфонарная и никого ни к чему не обязывает." Вопрос: правильно ли считать что поле PhysicalAddress как правило содержит 0? Спасибо. |
|
|
Дата: Апр 7, 2004 18:08:14 · Поправил: volodya Это union. Доки надо и на языке оригинала читать: Total size of the section when loaded into memory. If this value is greater than Size of Raw Data, the section is zero-padded. This field is valid only for executable images and should be set to 0 for object files. Так что, неправильно так считать. |
|
|
Дата: Апр 7, 2004 19:04:37 volodya Спасибо! ... я конечно извиняюсь ( может чего не понял ) но кажется Вы дали в ответе коментарий к VirtualSize, а меня интересует PhysicalAddress. Просто в некоторых PE-просмотрщиках (т.к. PE Studio) этого поля вообще нет. Хотя может я неправильно понимаю термин "union". Поясните если можно. Спасибо. |
|
|
Дата: Апр 7, 2004 19:42:50 Вот блин. А самому слабо? union - это термин С/С++. Переводится как "объединение". Это означает, с нашей точки зрения, что компилятор, просто-напросто, резервирует достаточный объем памяти, чтобы хранить ЛИБО одно, ЛИБО другое. В данном случае, хранится ЛИБО один DD, ЛИБО другой. Можно привести и другой пример: union f_1 dw ? f_2 dd ? Здесь, как видишь, я говорю, что неплохо бы хранить ЛИБО DW, ЛИБО DD. Компилятор это понимает и резервирует память под больший элемент - f_2. А хранится может либо f_1, либо f_2. Когда что - смотреть по контексту. |
|
|
Дата: Апр 8, 2004 10:12:00 volodya Спасибо! Теперь понятно. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069 |