с сигнатуры "MZ" или "ZM" (сигнатура ZM по крайней мере была актуальна для DOS).
PE-файл состоит из DOS-stub и PE.
Вопрос: можно ли сделать матрешку, чтобы был не только PE, но и к примеру, отличный от DOS-stub формат исполняемого модуля, к примеру ELF+PE?
Чтобы запускалось и на UNIX и на windows?
Нет, начало у двух структур абсолютно разное, скрестить их нельзя. Впрочем, как и сделать проверку на то, какой формат нужно подгружать - потому что, опять же, начало структур разное - либо загружаешься с ELF, а в конце будет PE, но тогда PE ты уже не загрузишь, потому что у тебя уже есть ELF, так и наоборот
Это вряд ли, ELF начинается с подписи ELF
Cosmopolitan libc посмотри
Но есть вариант со скриптами (Python). Но тогда лучше сразу всё на скриптах написать
Не не, задачи делать матрешку или писать скрипты - не стоит. Вопрос - можно ли сделать матрешку, отдельную от PE+DOS
Зато в линуксе парсится shebang (#!), а в винде можно посчитать, что это часть инструкции в .com-файле. А PE/ELF нельзя. А, вот как раз это, видимо, выше и запостили.
К .com файлу не прикрутишь PE(( Заголовок должен начинаться или с MZ или с ZM
Можно распаковывать его рядом с собой и запускать. Но выше по ссылке вариант очень крутой, гораздо лучше.
Неспортивно. Да, dos и винда сначала запускают .com и если он не найден, то .ехе
кстати com вполне может быть обычным PE и винда его запустит как обычно...
Я думаю, так не получится.
Обсуждают сегодня