Позсчитывание размера файла по PE заголовку

Тема в разделе "WASM.WIN32", создана пользователем sep, 22 авг 2004.

  1. sep

    sep New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    51
    Здравствуйте



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



    Спасибо
     
  2. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    От начала дополнительного PE заголовка, по смещению +38h находиться 4 байтовое поле - это размер PE файла, выровненый на ближайшую границу секции.
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > От начала дополнительного PE заголовка, по смещению +38h находиться 4 байтовое поле - это размер PE файла



    Вряд ли :derisive:



    В заголовке вообще не содержится размер файла, и его даже невозможно высчитать взяв физические параметры секций, т.к. у файла может быть оверлей.

    Единственное что можно прочесть в заголовке это Image Size(DWORD) по смещению 50h от начала PE Hider'а.
     
  4. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    > Вряд ли :derisive:

    Я посмотрел в HEXEditor'e там в у файлов размером 2560 байт стояло 3000
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Код (Text):
    1. 38h | DWord | Object align | выравнивание программных секций, должен быть
    2.     |       |              | степенью 2 между 512 и 256М включительно,
    3.     |       |              | так же связано с системой памяти.
    4.     |       |              | При использовании других значений программа
    5.     |       |              | не загрузится.


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

    zalexf New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2003
    Сообщения:
    1
    Адрес:
    Russia
    смотришь в HiEW смещение и физический размер последней секции, складываешь и выравниваешь на значение FileAlign из PE-заголовка - это и есть корректный физический размер файла
     
  7. sep

    sep New Member

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



    2 zalexf

    все равно не получается тот размер, что на диске :dntknw:, при подсчете - 200704, а на диске - 200762
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    zalexf

    А если у файла есть оверлей? Или ты не в курсе что есть такой :derisive:
     
  9. sep

    sep New Member

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

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336


    это и есть оверлей с путем до дебажной инфы