我已经尝试解决这个问题已有一段时间了,确实需要一些帮助。首先,有一些介绍:

我正在64位Ubuntu 16.04上运行来自Github的最新版本的radare2,并具有以下示例程序r2_test.cpp

#include <cstdio>

int main(int argc, char* argv[])
{
    int num;

    while (1)
    {
        printf("Enter a number: ");
        scanf("%d", &num);
        printf("You entered: %d\n", num);
    }

    return 0;
}


我要实现的目标是,使用radare2和两个终端调试该程序,方法是在终端窗口T1中运行radare2,并在终端窗口T2中输入/输出程序。经过一些研究,我认为应该可以借助rarun2工具来完成此操作。

因此,我第一次尝试阅读rarun2的手册页,特别是将IO重定向到另一个终端的部分,并在将T2终端标识为/dev/pts/17之后,创建了以下test.rr2文件:
#!/usr/bin/rarun2
stdio=/dev/pts/17


T2终端中,我然后运行sleep 999999,在终端T1中,我运行r2 -R test.rr2 -d a.out,当在radare2内部执行命令dc时,程序输入/输出在终端T1中,而不是我想要的我也尝试过使test.rr2相等的变化

#!/usr/bin/rarun2
stdin=/dev/pts/17
stdout=/dev/pts/17




#!/usr/bin/rarun2
stdio=/dev/pts/17
stdin=/dev/pts/17
stdout=/dev/pts/17


,但结果总是

在我第二次尝试后,经过研究和阅读,我尝试通过以下方式运行radare2:r2 -d rarun2 program=a.out stdio=/dev/pts/17。这样,我就实现了将IO重定向到终端T2的功能,但是在radee2内部调试的过程是rarun2工具,并且由于我对Linux及其反向工程的了解并不好,所以我真的不知道该如何进行

因此,总而言之,如果有人可以使用radare2进行这种调试,并且如果可以的话,如何实现呢?我也使用a.out进行了尝试,但是在该主题上我没有取得任何进展。

#1 楼

实际上,它非常简单,并且对我有用,如以下gif所示:




首先,您需要弄清楚以下内容的tty您要将STDIO重定向到的终端(也称为T2终端2)。
只需执行以下操作即可:

$ tty
/dev/pts/2


tty即将推出可以在rarun2配置文件上使用。
同时,让我们使用sleep 999999将T2睡眠。

移动到1号终端,让我们创建一个简单的rarun2配置文件,其中包含以下内容:

#!/usr/bin/rarun2
stdio=/dev/pts/2


我们配置了stdio来传输标准输入并输出到T2。
现在让我们使用刚刚创建的配置文件执行程序:

$ r2 -e dbg.profile=profile.rr2 -d a.out  
Process with PID 14074 started...
= attach 14074 14074
bin.baddr 0x00400000
Using 0x400000
Assuming filepath /tmp/re/a.out
asm.bits 64
 -- Mind that the 'g' in radare is silent
[0x7f9654e0fd80]>


(可以使用以下方法完成:r2 -r profile.rr2 -d a.out
该程序已在调试模式下成功加载。现在仅作为示例,让我们在第二次调用printf时设置一个断点,然后使用dc启动程序。在gif中,我没有创建断点。

[0x7f9654e0fd80]> db 0x00400580
[0x7f9654e0fd80]> dc
Selecting and continuing: 14074


现在T2给我们输出,并要求我们输入: />
向我们发送一个数字后,我们会在T1命中点上设置断点:标准输入和输出将在T2中。

评论


好的,所以问题在于Sublime不会自动向我的profile.rr2文件中添加“换行符”。另外,我只尝试了-R选项,并且它不起作用。我仍然不明白为什么它不适用于-R但适用于-e dbg.profile = ...无论如何,我现在知道如何使它起作用,非常感谢。如果有时间,可以用-R检查它是否对您有用。

– ubnix
17年9月28日在9:47

就像我在帖子中提到的那样,它可以与-R一起使用:)我检查了几次。很高兴我能够提供帮助!

–巨型甜菜
17年9月28日在9:50

+1 gif演示,非常清晰

–zipzip
19 Mar 5 '19在15:23