Доброе время уток! У меня небольшой вопрос: Какие есть недостатки (с вашей точки зрения) у формата исполняемых файлов PE? Если спросите, зачем тебе это – я просто хочу создать на его основе «новый» формат и может, есть какие-то предложения для «идеального» формату. Заранее спасибо.
SadKo это ясно, я много выкинул с заголовков, но может, есть какие-то моменты, которые хорошо было б изменить?
чем хороша эта идея? экономишь 20-30 байтов, а чтобы увидеть какие секции в файле присутствуют понадобится программа для просмотра секций.
t00x просто зачем лишние? а то что каждая секция будет подписанная - мало что выиграешь, легче чтобы программа сама понимала что за секция (под программой подразумеваю - дополнительная для простомотра ), сейчас много кто использует программы для простомотра PE файлов - даже когда секции подписание... а кто тебе даст уверенность в том что секция верно подписана? (это банальный случай, но всё же)
это лишнее, так как указатели и размер данных элементов есть в DataDir. Т.е. некий симбиоз DataDir и таблицы секции считаю хорошим решением.
AntiB Есть одно достоинство - все программы NT линейки имеют этот формат. (с ужасом вспоминаю win9x линейку). А так этот формат крайне расширяемый, даже и в 64 битах РЕ. Это достоинство перевешивает все недостатки.
однако имелось в виду убрать наименование секций. "идеальный формат" должен быть основан на архитектуре операционной системы, которая в свою очередь основана на аппаратном решении. поэтому формат исполняемых файлов PE являлся на момент создания "идеальный форматом" под все аппаратные решения.
t00x Идеальный -- громко сказано. Неплохой, достаточно гибкий -- да, но не идеальный. Кстати, архитектура ОС только частично зависит от аппаратуры.
имхо лучше создать свой а не переделывать PE. взять от туда только секции + иморт/экспорт/релоки. + упростить дебаг.
n0name я тоже так считаю, но за основу надо взять этот формат. Если разобраться то в нем много лишнего и ненужного, но самая основная конструкция, которою ты назвал - хорошая, надо просто добавить что-то свое но это мое мнения, хоть и может ошибочное
Меня вот интересует, где будет применяться этот формат? Писать под него свой загрузчик? Или свою ось? + свой компилятор нужен?
скорее линкер, что немного проще пишется. я свой в своей ОСи. AntiB все что я перечислил есть и в ELF AFAIR. ИМХО формат можно упростить до такой схемы: 1. Заголовок, 8 байт: сигнатура + слово флагов, присутствие "секций" 2. Сами секции, заданные в определенном порядке - секция данных, кода, релоки, импорт, экспорт, дебаг. всё, больше не надо.
естественно хидер "секции" можно упростить до: 1. RVA 2. VirtSize 3. PhysSize Релоки - это массив RVA. Экспорт - комбинация имени функции в паскаль виде и RVA. Импорт - то же самое что и экспорт, только с разбивкой на блоки для каждой "библиотеки". Я собираюсь использовать такой формат. ИМХО ничего лишнего, а функционал достаточен для самодельной личной ОСи.