如何让radare2接受十六进制输入

How to make radare2 accept hex input

我目前正在 radare2 中调试一个名为 "test" 的 C 程序,我想知道是否有任何方法可以通过 radare2 发送十六进制字符作为输入。我的意思是当你 运行 radare2 之外的东西时,你可以很容易地做这样的事情来将十六进制值作为输入发送到可执行文件中:

$ python -c "print('\x42\x97\x53\x8e\x46\x56')" | ./test

但是当我在 radare2 中以调试模式打开文件并尝试将十六进制值输入我的程序时,它没有将以“\x”开头的字符视为十六进制字符,而是将每个字符视为实际字符ascii 输入字符。我可以在 radare2 中复制上述命令吗?

环境:

  • radare2:radare2 4.2.0-git23519@linux-x86-64git.4.1.1-84- g0c46c3e1e 提交:0c46c3e1e30bb272a5a05fc367d874af32b41fe4 构建:2020-01-08__09:49:06
  • 系统: Ubuntu 18.04.3 LTS

解决方案:

  • 要在 radare2 中重新创建所描述的功能,我们可以使用两个 radare2 命令并在您的输入中添加额外的逃生包机 细绳。
    • 命令一:doo [args] # 使用提供的参数在调试模式下重新打开二进制文件。
    • 命令二:dc #继续执行
    • 输入中的其他逃生包机:“\x54\x65\x73\x74”->“\\x54\\x65\\x73\\x74”

示例:

  • 将十六进制值传递给 /bin/echo:
user@host:~$ echo -e "\x54\x65\x73\x74"
Test
  • 在 radare2 中尝试同样的事情:
user@host:~$ r2 /bin/echo
[0x00001d10]> doo -e "\x54\x65\x73\x74"
Process with PID 13820 started...
= attach 13820 13820
File dbg:///bin/echo  -e "\x54\x65\x73\x74" reopened in read-write mode
13820
[0x7ff1924ee090]> dc
x54x65x73x74
[0x7ff1924ee090]>
  • 再次使用 radare2,但有额外的逃生包机(“\x54”->“\\x54”):
user@host:~$ r2 /bin/echo
[0x00001d10]> doo -e "\x54\x65\x73\x74"
Process with PID 17265 started...
= attach 17265 17265
File dbg:///bin/echo  -e "\x54\x65\x73\x74" reopened in read-write mode
17265
[0x7fb080026090]> dc
Test
[0x7fb07fd18e06]>