Преобразовать hexdump в последовательность байтов - PullRequest
1 голос
/ 01 августа 2011

Я пытаюсь зарегистрировать определенную программу для запуска двоичных файлов, содержащих магическое число, с помощью binfmt_misc в Linux.

Это достигается путем вывода строки в формате:

: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 в hexl-режиме emacs:

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

Пока у меня есть:

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

, но я не уверен, какие значения мне нужно заменить $OFFSET и $MMAGIC на.

1 Ответ

1 голос
/ 02 августа 2011

Начинается с 3-го байта в файле.Смещения байтов начинаются с нуля, поэтому $OFFSET должно быть 2.

Ваш 01eb должен быть закодирован в шестнадцатеричном формате, поэтому $MAGIC равно \x01\xeb.Ваша оболочка может потребовать дополнительной обратной косой черты перед каждым \x, чтобы избежать ее.

...