#include<stdio.h>
#include<stdlib.h>
int main() {
puts("Enter input: ");
char buf[100];
fgets(buf, 100, stdin);
printf("%s", buf);
}
假设我正在调试一个程序,例如上面的程序,我需要在其中输入一些输入。通常,radare2 所做的是它允许我在程序要求我有用户输入时输入任何 ascii 输入,它看起来像下面这样:
Enter input: Hello
Hello
但是,如果我需要输入十六进制输入怎么办?通常,如果我想在radare2 之外的程序中使用十六进制输入,我会使用如下所示的命令:
python -c "print('\x48\x65\x6c\x6c\x6f')" | ./program
但是,如果我使用radare2 调试程序并使用\x48\x65\x6c\x6c\x6f 之类的东西作为输入,radare2 会将反冲x 逐字解释为看起来像“\x”的字符串,而不是将输入解释为十六进制。我将如何在radare2内部正确输入十六进制?