Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


All
Интересная ситуация. Согласно формату PE в его заголовке по смещению 0x38 находится поле Object Align, которое является
Цитата:
... выравниванием программных секций, должен быть степенью двойки между 512 и 256М включительно, так же связано с системой памяти. При использовании других значений программа не загрузится.
Следом за ним идет поле File align (0x3C):
Цитата:
фактор, используемый для выравнивания секций в программном файле. В байтовом значении указывает на границу на которую секции дополняются "0" при размещении в файле. Большое значение приводит к нерациональному использованию дискового пространства, маленькое увеличивает компактность, но и снижает скорость загрузки. Должен быть степенью двойки в диапазоне от 512 до 64К включительно. Прочие значения вызовут ошибку загрузки файла.
Но на практике оказалось возможно выставить значение выравнивания на 0x10 (1 параграф, 16 байт) при работающем файле. В результате получен EXE размером 704 байт (писан на Masm'e), меньше видимо только ручками. Еще раз круто убеждаемся, что:
Цитата:
... формат разрабатывали одни, а реализовывали его другие.
зы: а мне кажется, что uStick заслужил первое место, особенно учитывая оригинальное заполнение пустых мест в EXE () и то, что условия не учитывают запуск программы под любой версией Win. Проблема-то скорее всего в том, что ХР автоматически исправляет какие-то ошибки в структуре EXE, а Win2k (у меня он) - нет. Кто против?

Использованы материалы с http://virmaker-dos.narod.ru/sprav/pe.html

Отправлено: 18:28, 14-05-2005 | #12