将hexdump转换为字节序列

时间:2011-08-01 17:48:31

标签: linux hex hexdump

我正在尝试注册一个特定程序,以便在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:

我感兴趣的神奇数字在emacs的hexl-mode中显示为01eb

00000000: 0000 01eb 0000 4d8f 0000 09a0 0000 0314  ......M.........

到目前为止,我有:

:nine:M:$OFFSET:$MAGIC::/home/robb/nine/nine:    

但我不确定用$OFFSET$MMAGIC代替我需要什么值。

1 个答案:

答案 0 :(得分:1)

从文件的第3个字节开始。字节偏移从零开始,因此$OFFSET应为2。

您的01eb需要以十六进制编码,因此$MAGIC\x01\xeb。在每个\x之前,你的shell可能需要额外的反斜杠才能逃脱它。