BASh-将十六进制值列表转换为二进制文件(应用程序)



我有一个文件,其中包含一个小程序中代码的十六进制表示,并试图将其实际转换为程序本身。

例如,这里有一个这样的文本示例,存储在文件input.txt:中

8d
00
a1
21
53
57
43
48
0e
00
bb

我正在使用以下BASh片段将文件转换为二进制文件:

rm outfile; while read h; do echo -n ${h}; echo -ne \x${h} >> outfile; done < input.txt

在VIM:中打开输出文件后

¡!SWCH»

然后通过xxd:将其转换为十六进制表示

0000000: 8d00 a121 5357 4348 0e00 bb0a            ...!SWCH....

这一切都很好,除了一件事:有一个尾随字节,0a,尾随在我的二进制输出文件的末尾。我使用的每个程序文件都会发生这种情况。尾随的0a是如何附加到每个输出二进制文件的?它不存在于我的输入文件中。

谢谢。

简单地说,直接从类似bash的中使用xxd

xxd outfile > outfile.hex

你会看到,这里没有任何0a

当vim向xxd命令发送一行时,0a被附加在某个位置。如果你想在vim内部转换-尝试使用

vim -b outfile

以二进制模式打开CCD_ 7。

相关内容

最新更新