1

Тема: Установка DOS-заглушки любого размера

Некоторое время назад мне на почту написал разработчик, занимающийся встраиваемыми системами для авиации и космических систем. Ему нужна программа, работающая из командной строки и позволяющая заменить заглушку PE-файла на DOS-программу любого размера, как собрана, например, Bootpart.

Существующая процедура замены заглушки в PE Tool разрабатывалась по большей части ради минимального размера оной (64 байта), нынче встроенной в саму Pet. На больши́х заглушках программа не тестировалась. На предоставленных мне примерах PE Tool 0.6 выдает невалидный файл, а в разрабатываемой ветке 0.7 в качестве превентивной меры выдается ошибка о невозможности замены (это было реализовано еще 2 года назад, задолго до описываемых событий).

Совместными усилиями мы также нашли pe-setstub — скрипт на Perl, меняющий заглушки. С тестовыми примерами он не справился:

setstub.pl: fatal: stub is too long (6628 > 3528) (trylshs = 7680 > 4096), and has relocations: STUB.EXE

Я пока в отпуске, и на правах проекта выходного дня решил посмотреть, насколько сложно переписать перебазирование таким образом, чтобы можно было и заглушки заменять, и слияние секций потом делать. Уже удалось добиться укладки компонентов PE-файла с нужными смещениями, но Windows пока не хочет признавать его приложением Win32.

Не знаю, удастся ли отладить код до конца. По времени проекта выходного дня остался один день. Возможно, придется загрузить код на GitHub как есть, чтобы посмотрел кто-то еще. Тестовые примеры прикрепил. Мой «заказчик» на Delphi не пишет, к сожалению.

Свежим взглядом

Глядя в собственный код после долгого перерыва, прихожу в ужас от видимых невооруженным глазом багов. Вдобавок, за это время прояснились некоторые системные моменты, из-за незнания которых в коде полно костылей. Я хоть и старался тогда писать «по-взрослому», но ограниченность во времени на вдумчивое исследование всё же оказала свое влияние: некоторые части выглядят написанными на коленке. Зато хоть Delphi я за эти 2 года не забыл, — только это и радует.

Новости 2022 года

Новости разработки по основным направлениям теперь появляются так редко, что тему впору назвать «Новости 2022 года».

Post's attachments

Иконка вложений AnyStub.7z 26.91 Кб, 25 скачиваний с 2022-08-14 

2

Re: Установка DOS-заглушки любого размера

Некоторое время назад, просматривая описание формата PE, понял, что скорее всего налажал с выравниванием: оно у меня там на 4 байта, а надо на 8.

Про само описание еще в прошлом году писал, что в Microsoft наконец-то выложили его не в виде угробищного файла Word, а как полагается у здоровых людей. Показалось также, что содержимое секций теперь задокументировано полностью (или полнее, чем было раньше, не сравнивал).

3

Re: Установка DOS-заглушки любого размера

Freeman пишет:

понял, что скорее всего налажал с выравниванием: оно у меня там на 4 байта, а надо на 8.

Или

Microsoft пишет:

Microsoft reserves the right to alter this document without notice