ファイルを生成する必要がありますが、「file filename」コマンドを実行すると、「application/x-executable」ファイルと表示されるはずです。
答え1
file
ELF実行可能ファイルのMIMEタイプを報告します(少なくとも私が見ているバージョン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
バイト順序フィールドが1/2ではなく0であるため)。