/ / Plik wykonywalny systemu Windows ze skryptem powłoki linux wewnątrz - linux, windows, shell

Plik wykonywalny systemu Windows ze skryptem powłoki linuksowej wewnątrz - linux, windows, shell

Dla mnie to brzmi jak misja niemożliwa, ale są ludzie, którzy wiedzą więcej niż ja, więc pomyślałem, że może mam szansę :)

Chciałbym mieć 1 plik, który byłby uruchamiany zarówno w systemie Windows, jak i Linux.

Zasadniczo program może być wykonany z 2 części.
Część 1 to plik wykonywalny systemu Windows, który może działać w systemie Windows.
Część 2 to skrypt powłoki linuksowej, który może działać na Linuksie.

Czy istnieje sposób na zbudowanie pliku w taki sposób, aby linux mógł zignorować binarne pliki wykonywalne systemu Windows i po prostu uruchomić skrypt powłoki, który jest dołączany jako tekst do pliku wykonywalnego systemu plików binarnych?

Próbowałem dodać bajty przed oknami exe,i oczywiście Windows nie rozpoznaje pliku. Więc tak, nie mogę umieścić niczego przed bajtami pliku wykonywalnego, jednak mogę je dodać na końcu pliku.

Następnie, na Linuksie, wziąłem prosty skrypt

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

i dodał trochę tekstu przed skryptem. Wszystko co robił, to narzekać na nieistniejące polecenie, ale kontynuował wykonywanie pliku i otrzymałem tekst "cześć świat".

Łącząc te dwie rzeczy (cat runLinuxPart.sh >> myMix.exe) i wtedy chmod +x myMix.exe to uruchom, dostaję The entry point method could not be loaded :(

Plik powłoki linuksowej jest rodzajem samodzielnego instalatora. Zawiera plik .tar na końcu i skrypt z przodu, więc jeśli uruchomię .sh na Linuksie, dostaje on .tar, wyciąga i robi wszystko, czego potrzebuję.

Celem Windowsa jest połączenie się ze zdalnym komputerem linuxowym, wyodrębnienie z niego pliku .sh i przesłanie go do Linuksa, a następnie uruchomienie.

Chcę udostępnić użytkownikom jeden samodzielny plik instalacyjny.

Jeśli to moje marzenie jest niemożliwe, oczywiście będzie dobrze z 2 osobnymi instalatorami

Odpowiedzi:

2 dla odpowiedzi № 1

Skrypt Linuksa powinien zaczynać się od #!. Linux ELF plik wykonywalny powinien rozpoczynać się od x7FELF. Jeśli plik wykonywalny systemu Windows nie może rozpocząć się od tych bajtów, twoje marzenie nie jest możliwe. Wierzę w to PE (binarny format pliku wykonywalnego Windows) nie może zaczynać się od tych (ale nie jestem pewien). Stąd twój uniwersalny instalator pojedynczy plik jest niemożliwym marzeniem.

W systemie Linux warto rozważyć grę binfmt_misc lub Shar.

Czytać Levine "s Łączniki i ładowarki książka, i elf (5) & execve (2) Strony man Linux.