Добавление секции в PE файл

Тема в разделе "WASM.WIN32", создана пользователем sasha_s, 27 янв 2009.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Уж сколько литературы написано про это, мама не горюй. И нигде нет инфы как ее добавить если для IMAGE_SECTION_HEADER нет места, т.е. если первая секция имеет скажем PointerToRawData == 512, а все заголовки + таблица секций имеют размер 496. Т.е. нет доп. 40 байт (размер IMAGE_SECTION_HEADER) что бы впихнуть не раздвигая файл. А если раздвигать -- то какие поля надо увеличивать на FileAlignment (это из IMAGE_OPTIONAL_HEADER)?

    я увеличивал следующие:

    - у каждой секции PointerToRawData на туже FileAlignment;
    - у IMAGE_OPTIONAL_HEADER увеличивал SizeOfImage, SizeOfCode;

    и что-то еще не профиксил... т.к. файлы не запускаются после патча моим кодом. Причем с файлами в которых места хватает -- все работает.

    Кто сталкивался, подскажите.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    попробуй удалить MZ заголовок, он обычно не менее 0x40 байт, а для еще 1й записи в таблице секций надо 0x28 байт
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    а это зачем?
     
  4. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Ну какой-то слишком брутальный метод...
     
  5. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    SizeOfCode -- The size of the code (text) section, or the sum of all code sections if there are multiple sections.

    SizeOfImage -- The size (in bytes) of the image, including all headers, as the image is loaded in memory. It must be a multiple of SectionAlignment.

    забыл сказать что увеличивал еще и это, но не помогло:

    SizeOfHeaders -- The combined size of an MS DOS stub, PE header, and section headers rounded up to a multiple of FileAlignment.

    источник: pecoff_v8.doc с сайта майкрософта
     
  6. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    пооткрывай файлы разными PE редакторами/вьерами и гляди где они обрываются
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    sasha_s, сори, неправильно понял твое предложение.
    выложи файл - возможно ты что-то где-то невыровнял