Увеличение размера кодовой секции в PE

Тема в разделе "WASM.BEGINNERS", создана пользователем Buccaneer, 1 дек 2005.

  1. Buccaneer

    Buccaneer New Member

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

    Это мой первый пост на WASM, посему не сильно лупите ;)







    Мне нужно физически увеличить размер кодовой секции PE

    для того чтобы вписать чуток своего кода внутрь(предполагается и физическое увеличение файла .exe, .dll), ато уже запарился уже искать свободные места на границах выравнивания функций, сегментов. Попробовал поиграться с PETools, так на уменьшение там особо проблем нет(кажется Rebuild PE это и делает), а вот с увеличением проблема. Так же хотелось бы не иметь потом геммороя с таблицей Exports в связи с возможным изменением адресов експортируемых функций.

    Может кто-нить подскажет достойную технику, доку, инструмент.

    Спасибо
     
  2. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    ну к примеру увеличь последнию секцию на file alignment

    и в 16м редакторе допиши нолики
     
  3. her_ich

    her_ich New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2009
    Сообщения:
    8
    Решил поднять старую тему.
    Встала подобная заача - увеличить размер первой секции.
    При помощи LordPE увеличил первую секцию на 1000h, не забыв исправить все поля, указывающие на области после первой секции (исправил всё, что доступно в LordPE)
    В результате нифига не заработало.
    Возник вопрос - это вообще реально - вот таким образом увеличить размер первой секции?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    в общем случае - нет. связанно стем, что тогда надо изменить все возможные ссылки с первой секции на последующие, а также возможные относительные ссылки обратно.
     
  5. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Возможно, только в том случае, если физический размер секции меньше виртуального. Т.к. обычно в нормальных приложениях компилятор ставит физическое выравнивание 200h и виртуальное выравнивание 1000h, все ссылки в программе считается относительно виртуальных адресов, также и деректории иморта, ресурсов и пр. считаются относительно виртуальных адресов. Сл-но, например, если секция кода имеет физический размер 400h, то можно без ущерба для программы расширить ее до 1000h, соотвественно пересчитав при этом физические смещения всех последующих секций.
     
  6. her_ich

    her_ich New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2009
    Сообщения:
    8
    Спасибо за совет!
    Так и поступил, но что-то не сработало :dntknw:
    Приложение вообще не стартует.
    В приложеных файлах описание произведенных изменений и ошибка.
    Что я не так делаю?
     
  7. her_ich

    her_ich New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2009
    Сообщения:
    8
    да, забыл сказать - естественно, в сам файл начиная с позиции 6000h помещаю блок из 100h нулей
     
  8. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Из рисунка видно что физическое выравнивание 200h, значит ты не можешь увеличить секцию на 100h! Увеличивай на 200h. И т.к. ты увеличишь размер первой секции, смещения всех последующих секций должны тоже увеличится.

    Делай чтоб было так

    [​IMG]

    P.S. Вроде посчитал все верно
     
  9. her_ich

    her_ich New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2009
    Сообщения:
    8
    Спасибо!!!
    Блин, небольшая невнимательность зачастую приводит к большим затратам времени!
    Всё отлично работает!
     
  10. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    а почему адреса экспортируемых функций должны измениться? что, что, а адреса загрузки библиотек не зависят от размера первой секции исполняемого файла.

    вообще, размер секции можно без каких либо проблем увеличить до виртуального размера страницы. тут даже никаких адресов править не придётся.
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Flint_ta, это частный случай :)