2013-07-31 2 views
1

Для меня это звучит как миссии невозможно, но есть люди, которые знают больше, чем я, так что я подумал, что у меня есть шанс :)Windows, исполняемый с помощью сценария оболочки Linux внутри

Я хотел бы иметь 1 файл который будет выполняться на обоих - windows и linux.

В принципе, программа может быть выполнена из 2-х частей.
Часть 1 - это исполняемый файл Windows, который может работать на окнах.
Часть 2 - сценарий оболочки Linux, который может работать на Linux.

Есть ли способ создать файл таким образом, чтобы linux мог игнорировать двоичные исполняемые байты Windows и просто запускать сценарий оболочки, который добавляется как текст в исполняемый файл двоичных окон?

Я попытался добавить байты перед окнами exe, и, конечно, окна не смогли распознать файл. Так что да, я не могу положить ничего перед байтами исполняемого файла, однако я могу добавить их в конец файла.

Тогда на Linux, я взял простой скрипт

#!/bin/bash 
echo "Hello world?" 
exit 0 

и добавил текст перед скриптом. Все, что он делал, было жалобой на несуществующую команду, но продолжал выполнять файл, и я получил текст «hello world».

Положив эти две вещи вместе (cat runLinuxPart.sh >> myMix.exe), а затем chmod +x myMix.exe затем запустить его, я получаю The entry point method could not be loaded :(

Файл линукс оболочка является своего рода самостоятельной экстрактор-установщиком. Она держать .tar в конце и скрипт на передней панели, поэтому, если я запускаю .sh на linux, он получает .tar, извлекает и делает все, что мне нужно.

Целью exe exe windows является подключение к удаленной машине linux, извлечение .sh файла из

Я хочу дать отдельную информацию о себе более высокий файл для пользователей.

Если это моя мечта невозможна я, конечно, будет хорошо с 2 отдельными монтажников слишком

ответ

2

Linux-скрипт командного процессора должен начинаться с #!. Исполняемый файл Linux ELF должен начинаться с \x7FELF. Если исполняемый файл Windows не может начинаться с этих байтов, ваш сон невозможен. Я считаю, что PE (двоичный формат исполняемого файла Windows) не может начаться с этих (но я не уверен). Следовательно, ваш универсальный установщик single файл - это невозможный сон.

В Linux вы можете рассмотреть возможность игры с binfmt_misc или shar.

Прочитать Levine's Linkers and Loaders книга, и elf(5) & execve(2) Личные страницы Linux.

Смежные вопросы