Здравствуйте Вот проблема уже долгое время мучит... Как посчитать размер файла по заголовку PE-файла ? А то вроде бы все считается и размеры всех секций выровненные на FileAlign + размеры заголовка и таблицы секций + размер досовской части = результат расходится на десятки-сотни байтов. Может не учел чего-то ? Подскажите если кто знает. Спасибо
От начала дополнительного PE заголовка, по смещению +38h находиться 4 байтовое поле - это размер PE файла, выровненый на ближайшую границу секции.
> От начала дополнительного PE заголовка, по смещению +38h находиться 4 байтовое поле - это размер PE файла Вряд ли В заголовке вообще не содержится размер файла, и его даже невозможно высчитать взяв физические параметры секций, т.к. у файла может быть оверлей. Единственное что можно прочесть в заголовке это Image Size(DWORD) по смещению 50h от начала PE Hider'а.
Код (Text): 38h | DWord | Object align | выравнивание программных секций, должен быть | | | степенью 2 между 512 и 256М включительно, | | | так же связано с системой памяти. | | | При использовании других значений программа | | | не загрузится. По другому это поле называется SectionAlignment
смотришь в HiEW смещение и физический размер последней секции, складываешь и выравниваешь на значение FileAlign из PE-заголовка - это и есть корректный физический размер файла
Вопрос был немного о другом Узнать размер это одно, а вот знать почему получается другой размер при складывании всех составляющих PE-файла это другое. Интересует именно второе, а то что-то странное творится с размером. 2 zalexf все равно не получается тот размер, что на диске , при подсчете - 200704, а на диске - 200762
Ну вобщем попробовал над calc.exe поизвращаться... получилось В конце файла левая строчка какая-то, я ее убрал обрезав файл до "правильной" дляны и теперь все совпадает и даже работает. У меня такие строчки (с путями) в дебажных версиях прог в студии, это видать debug data. Но вот что они в виндовом калькуляторе делают ?