#include<stdio.h>
#include<stdlib.h>
int main() {
puts("Enter input: ");
char buf[100];
fgets(buf, 100, stdin);
printf("%s", buf);
}
假设我正在调试一个程序,例如上面的程序,需要在其中输入一些输入。通常,radare2的作用是,只要程序需要我输入用户名,它就可以让我键入任何ascii输入,并且它看起来像以下内容:
/>但是,如果我需要输入十六进制输入怎么办?通常,如果我想在radare2之外的程序中使用十六进制输入,我将使用如下所示的命令:程序,并使用\ x48 \ x65 \ x6c \ x6c \ x6f这样的输入,radare2会将字面量x解释为看起来像“ \ x”的字符串,而不是将输入解释为十六进制。在radare2内部如何正确输入十六进制?
#1 楼
在文件中写入字符串:
$ echo -e '\x48\x65\x6c\x6c\x6f' > p.text
或
$ python -c "print('\x48\x65\x6c\x6c\x6f')" > p.text
执行radare2:
$ r2 -d program
一旦在
r2
内部执行dor
(rarun2
的别名)并将stdin
设置为文件:[0x7f1a2522a090]> dor stdin=p.text
[0x7fb15f311e06]> doo # Reopen in debugger mode
评论
查看rarun2的文档