Serge wrote:
1.Зачем экспорт, длл в pe формате. Велосипед изобретаем только для екзешников.
Тогда изобретать собственный формат и правда глупо.
У меня написана утилита для работы с образами PE, которую можно было бы научить сохранять и в MENUET01, и в KOLIBRI, делая rebase и перетасовывая секции как нужно. Думал создать для нее тему.
Serge wrote:
Если ecode выравнен на страницу, секция кода может быть защищена от записи, остальные соответственно от исполнения. eimport и edata похоже действительно лишние. Файл приложения это образ в памяти
Ты уж определись: или образ в памяти, или защита. Предположим, у меня есть 600 байт кода, 40 байт данных и еще 600 байт импорта. Если файл -- образ в памяти, с заголовком выходит 1288 байт. Если же при этом нужна защита, имеется три секции: код с защитой от записи, данные с защитой от исполнения и импорты с защитой от (чего?).
При 4 КБ на страницу получаем файл размером 12336 байт, если он по-прежнему образ в памяти. Разве не так? Ни фига себе "Колибри"!Добавлено: Впрочем, даже в PE выравнивание в файле и в памяти может отличаться...
Я подразумевал, что если загрузчик знает размеры секций, он их сможет растасовать их по страницам, которые и займут в памяти 12 КБ, а файл при этом останется 1288 байт, что более привычно для "Колибри".
Если код и импорты с экспортами имеют одни и те же флаги защиты, их можно объединить, тогда надо еще подумать, как это наиболее технологично сделать.
Добавлено: Неожиданно быстро удалось прикрутить сохранялку в формат KOLIBRI (концепт). Порядок секций такой же, как в описании: код, импорты, экспорты, данные. Rebase не делается, image base прописывается исходный. Вызывать:
Code:
pet my.dll -into my -kolibri -strip -trunc
В режиме -strip выравнивание не делается, иначе выравнивается на 8 байт. Ключ -trunc запрещает выравнивать последнюю секцию (данные).