我正在尝试通过在 Linux 上使用 binfmt_misc 来注册一个特定的程序来运行包含幻数的二进制文件。
这是通过以以下格式回显字符串来完成的:
:name:type:offset:magic:mask:interpreter:flags
Linux 内核文档在 Documentation/binfmt_misc 中提供了该字符串的一些示例:
:i386:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/bin/em86:
:i486:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/bin/em86:
:DEXE:M::\x0eDEX::/usr/bin/dosexec:
:DOSWin:M::MZ::/usr/local/bin/wine:
我感兴趣的幻数显示为01eb
emacs 的 hexl-mode:
00000000: 0000 01eb 0000 4d8f 0000 09a0 0000 0314 ......M.........
到目前为止,我有:
:nine:M:$OFFSET:$MAGIC::/home/robb/nine/nine:
但我不确定我需要替换$OFFSET
和$MMAGIC
使用哪些值。