linux - 将 hexdump 转换为字节序列

标签 linux hex hexdump

我正在尝试通过在 Linux 上使用 binfmt_misc 注册一个特定程序来运行包含魔数(Magic Number)的二进制文件。

这是通过回显以下格式的字符串来完成的:

: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:

我感兴趣的魔数(Magic Number)在 emacs 的十六进制模式中显示为 01eb:

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

到目前为止,我有:

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

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

最佳答案

它从文件中的第 3 个字节开始。字节偏移量从零开始,所以 $OFFSET 应该是 2。

你的01eb需要十六进制编码,所以$MAGIC\x01\xeb。您的 shell 可能需要在每个 \x 之前添加一个额外的反斜杠以对其进行转义。

关于linux - 将 hexdump 转换为字节序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902302/

相关文章:

memory - 在 C 中将内存打印为 1 字节十六进制

java - Android默认白色背景十六进制代码

python - python 中的 perl hex() 模拟

perl - shell 魔法通缉: format output of hexdump in a pipe

c - Socket编程PF包套接字

linux - 在 Linux 网络共享挂载上更新 SVN 工作副本

java - 将十六进制字符串转换为字节数组以进行 RSA 解密

java - 如何在java中将位数组转换为包含8位的十六进制

php - wordpress中的文件写入问题

linux - 可以有比端口号更多的 TCP 套接字吗?