gpt4 book ai didi

linux - 带有 linux shell 脚本的 Windows 可执行文件

转载 作者:可可西里 更新时间:2023-11-01 11:55:34 28 4
gpt4 key购买 nike

对我来说,这听起来像是不可能完成的任务,但有些人比我知道的更多,所以我想也许我有机会:)

我希望有 1 个文件可以在 windows 和 linux 上执行。

基本上,程序可以由两部分组成。
第 1 部分是可以在 windows 上运行的 windows 可执行文件。
第 2 部分是可以在 linux 上运行的 linux shell 脚本。

有没有办法以这样一种方式构建文件,即 linux 可以忽略 windows 二进制可执行字节,而只运行作为文本附加到二进制 windows 可执行文件上的 shell 脚本?

我试过在windows exe之前添加字节,当然windows无法识别该文件。所以是的,我不能在可执行文件的字节之前放置任何内容,但是我可以将它们添加到文件末尾。

然后,在 linux 上,我采用了纯脚本

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

并在脚本之前添加了一些文本。它所做的只是提示不存在的命令,但继续执行文件,我得到了“hello world”文本输出。

将这两个东西放在一起 (cat runLinuxPart.sh >> myMix.exe) 然后 chmod +x myMix.exe 然后运行它,我得到 无法加载入口点方法 :(

linux shell 文件是一种自解压安装程序。它在末尾保存 .tar,在前面保存脚本,所以如果我在 Linux 上运行 .sh,它会获取 .tar、提取并完成我需要的一切。

windows exe的目的是连接到远程linux机器,从自身提取.sh文件上传到linux,然后运行。

我想为用户提供一个自安装程序文件。

如果这是我的梦想是不可能的,我当然也可以使用 2 个单独的安装程序

最佳答案

Linux shell 脚本应该以 #! 开头。 Linux ELF可执行文件应以 \x7FELF 开头。如果 Windows 可执行文件不能以这些字节开头,您的梦想就不可能实现。我相信PE (Windows 可执行文件的二进制格式)不能以这些开头(但我不确定)。因此,您的通用安装程序单个文件是一个不可能实现的梦想。

在 Linux 上,您可以考虑使用 binfmt_miscshar .

阅读Levine's Linkers and Loaders书,和elf(5) & execve(2) Linux 手册页。

关于linux - 带有 linux shell 脚本的 Windows 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17971425/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com