如何制作应用程序/x可执行文件

如何制作应用程序/x可执行文件

我需要创建一个文件,当运行命令“file filename”时,它应该显示它是一个“application/x-executable”文件

答案1

file报告 ELF 可执行文件的 mime 类型(并且仅 ELF 可执行文件,至少在我正在查看的版本 5.22 中似乎如此)。

因此,您只需要足够的 ELF 文件头即可找到 ELF 可执行文件。例如:

printf '\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\2\0' > file

其中重要的是:

  • \177ELF将其标识为 ELF 文件
  • \2\0意味着可执行文件(与共享库或其他 ELF 文件类型相反)。
  • 第一个\1告诉它是小尾数法(如果将其更改为\2,则\2\0必须更改为\0\2)。

其余的一切你都可以改变。例如,您可以将其缩短为printf '\177ELF.\1%10s\2\0'.

这包括被识别为 ELF 可执行文件所需的最低限度。

file --mime-type file显示哑剧类型)。

或者只是从系统上的任何 ELF 可执行文件中获取这些字节:

head -c18 < /bin/ls > file

不用说,它不会使这些文件成为有效的 ELF 可执行文件。 ELF 文件头足以file将它们识别为 ELF 可执行文件,但不足以让您的系统能够执行它们。

要制作仍然可以执行的小型 ELF 可执行文件,请参阅这家伙的尝试创建最小的“Hi World”可执行文件(适用于 x86/amd64 上的 Linux):

uudecode << EOF
begin-base64 755 file
f0VMRgEBAUhpIFdvcmxkCgIAAwABAAAAgIAECDQAAAAAuAQAAADNgOtYIAAC
ACgABQAEAAEAAAAAAAAAAIAECACABAiiAAAAogAAAAUAAAAAEAAAAQAAAKQA
AACkkAQIpJAECAkAAAAJAAAAugkAAAC5B5AECLsBAAAA66QAAADr6rsAAAAA
uAEAAADNgA==
====
EOF

或来自http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html(45 个字节!),除了以代码 42 退出之外什么也不做:

uudecode << EOF
begin-base64 755 file
f0VMRgEAAAAAAAAAAAABAAIAAwAgAAEAIAABAAQAAACzKjHAQM2AADQAIAAB
====
EOF

有趣的是,Linux 接受将其作为 ELF 可执行文件执行,即使它不是有效的可执行文件(它甚至比 ELF 标头还短),并且file不报告application/x-executable它(因为字节顺序字段是 0 而不是 1/2)

相关内容