#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内部如何正确输入十六进制?

评论

查看rarun2的文档

#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内部执行dorrarun2的别名)并将stdin设置为文件:

[0x7f1a2522a090]> dor stdin=p.text
[0x7fb15f311e06]> doo # Reopen in debugger mode