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

时间:2019-03-02 17:50:12

标签: debugging reverse-engineering radare2

我目前正在用radee2调试一个名为“ test”的C程序,我想知道是否有任何方式可以通过radee2输入十六进制字符作为输入。我的意思是,当您在radare2之外运行某些内容时,可以轻松地执行以下操作以将十六进制值作为输入发送到可执行文件中:

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

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

1 个答案:

答案 0 :(得分:2)

环境:

  • radare2::radare2 4.2.0-git 23519 @ linux-x86-64 git.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]>