2011-08-01 73 views
1

我正試圖通過在Linux上使用binfmt_misc來註冊特定程序來運行包含幻數的二進制文件。將hexdump轉換爲字節序列

:name:type:offset:magic:mask:interpreter:flags 

Linux內核文檔提供了這個字符串的文件/ 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: 

神奇的數字

這是由echo'ing格式字符串完成我感興趣的顯示爲01eb in emacs'hexl-mode:

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

到目前爲止,我有:

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

,但我不知道什麼樣的價值觀我需要更換$OFFSET$MMAGIC

+0

1爲偏移量,因爲你想指向第二個數字和01eb,這是你的魔法數字。沒有? – 2011-08-01 17:52:01

回答

1

它從文件的第3個字節開始。字節偏移從零開始,所以$OFFSET應該爲2

01eb需要以十六進制編碼,所以$MAGIC\x01\xeb。您的外殼可能在每個\x之前需要額外的反斜槓才能逃脫。