有哪些方法可以通过 Linux 终端将原始字节传递给程序?

逆向工程 二元分析 二进制 模糊测试
2021-06-26 03:20:47

我想使用 Linux Bash shell 将原始字节传递给 (C) 程序。我发现当我尝试传递例如“\x00\xFF\xAB”时,接收输入的程序实际上获取字符串ASCII 字符代码,而不是将它们解释为原始字节。

我见过人们实现这一点的一种方法是调用python -c 'print("\x00\xFF\xAB")'和管道输出到被测程序。有没有办法只使用 Bash shell 而不使用 Python 来做到这一点?

2个回答

如果您需要空字节,您可以将它们写入文件并将该文件用作程序的输入,例如:

echo -e -n "\x00\xFF\xAB" > file.bin

程序 < 文件.bin

您还可以使用xxd将十六进制转换为二进制:

回声“00 FF AB” | xxd -r -p | 程序

使用echo -e并通过管道连接到程序的输入。

示例: echo -e "\x41\x42\x43\x44" | <executable> 将写入 ABCD 作为输入。

编辑:您可以传递空字节