· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Позсчитывание размера файла по PE заголовку

Посл.отвђт Сообщенiе


Дата: Авг 22, 2004 11:57:46

Здравствуйте

Вот проблема уже долгое время мучит... Как посчитать размер файла по заголовку PE-файла ? А то вроде бы все считается и размеры всех секций выровненные на FileAlign + размеры заголовка и таблицы секций + размер досовской части = результат расходится на десятки-сотни байтов. Может не учел чего-то ? Подскажите если кто знает.

Спасибо


Дата: Авг 22, 2004 13:32:25

От начала дополнительного PE заголовка, по смещению +38h находиться 4 байтовое поле - это размер PE файла, выровненый на ближайшую границу секции.


Дата: Авг 22, 2004 16:08:25

> От начала дополнительного PE заголовка, по смещению +38h находиться 4 байтовое поле - это размер PE файла

Вряд ли ;-)

В заголовке вообще не содержится размер файла, и его даже невозможно высчитать взяв физические параметры секций, т.к. у файла может быть оверлей.
Единственное что можно прочесть в заголовке это Image Size(DWORD) по смещению 50h от начала PE Hider'а.


Дата: Авг 22, 2004 16:44:12

> Вряд ли ;-)
Я посмотрел в HEXEditor'e там в у файлов размером 2560 байт стояло 3000


Дата: Авг 22, 2004 17:19:56 · Поправил: Asterix

38h | DWord | Object align | выравнивание программных секций, должен быть
    |       |              | степенью 2 между 512 и 256М включительно,
    |       |              | так же связано с системой памяти.
    |       |              | При использовании других значений программа
    |       |              | не загрузится.

По другому это поле называется SectionAlignment


Дата: Авг 23, 2004 06:52:10

смотришь в HiEW смещение и физический размер последней секции, складываешь и выравниваешь на значение FileAlign из PE-заголовка - это и есть корректный физический размер файла


Дата: Авг 23, 2004 09:51:09

Вопрос был немного о другом :) Узнать размер это одно, а вот знать почему получается другой размер при складывании всех составляющих PE-файла это другое. Интересует именно второе, а то что-то странное творится с размером.

2 zalexf
все равно не получается тот размер, что на диске :(, при подсчете - 200704, а на диске - 200762


Дата: Авг 23, 2004 12:05:12

zalexf
А если у файла есть оверлей? Или ты не в курсе что есть такой ;-)


Дата: Авг 23, 2004 12:33:28

Ну вобщем попробовал над calc.exe поизвращаться... получилось :) В конце файла левая строчка какая-то, я ее убрал обрезав файл до "правильной" дляны и теперь все совпадает и даже работает. У меня такие строчки (с путями) в дебажных версиях прог в студии, это видать debug data. Но вот что они в виндовом калькуляторе делают ?


Дата: Авг 23, 2004 12:57:20

„В конце файла левая строчка какая-то“
это и есть оверлей с путем до дебажной инфы


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054