Привет Это мой первый пост на WASM, посему не сильно лупите Мне нужно физически увеличить размер кодовой секции PE для того чтобы вписать чуток своего кода внутрь(предполагается и физическое увеличение файла .exe, .dll), ато уже запарился уже искать свободные места на границах выравнивания функций, сегментов. Попробовал поиграться с PETools, так на уменьшение там особо проблем нет(кажется Rebuild PE это и делает), а вот с увеличением проблема. Так же хотелось бы не иметь потом геммороя с таблицей Exports в связи с возможным изменением адресов експортируемых функций. Может кто-нить подскажет достойную технику, доку, инструмент. Спасибо
Решил поднять старую тему. Встала подобная заача - увеличить размер первой секции. При помощи LordPE увеличил первую секцию на 1000h, не забыв исправить все поля, указывающие на области после первой секции (исправил всё, что доступно в LordPE) В результате нифига не заработало. Возник вопрос - это вообще реально - вот таким образом увеличить размер первой секции?
в общем случае - нет. связанно стем, что тогда надо изменить все возможные ссылки с первой секции на последующие, а также возможные относительные ссылки обратно.
Возможно, только в том случае, если физический размер секции меньше виртуального. Т.к. обычно в нормальных приложениях компилятор ставит физическое выравнивание 200h и виртуальное выравнивание 1000h, все ссылки в программе считается относительно виртуальных адресов, также и деректории иморта, ресурсов и пр. считаются относительно виртуальных адресов. Сл-но, например, если секция кода имеет физический размер 400h, то можно без ущерба для программы расширить ее до 1000h, соотвественно пересчитав при этом физические смещения всех последующих секций.
Спасибо за совет! Так и поступил, но что-то не сработало Приложение вообще не стартует. В приложеных файлах описание произведенных изменений и ошибка. Что я не так делаю?
Из рисунка видно что физическое выравнивание 200h, значит ты не можешь увеличить секцию на 100h! Увеличивай на 200h. И т.к. ты увеличишь размер первой секции, смещения всех последующих секций должны тоже увеличится. Делай чтоб было так P.S. Вроде посчитал все верно
Спасибо!!! Блин, небольшая невнимательность зачастую приводит к большим затратам времени! Всё отлично работает!
а почему адреса экспортируемых функций должны измениться? что, что, а адреса загрузки библиотек не зависят от размера первой секции исполняемого файла. вообще, размер секции можно без каких либо проблем увеличить до виртуального размера страницы. тут даже никаких адресов править не придётся.