一段时间以来,我一直试图解决这个问题,并且确实需要一些帮助。首先介绍一下:
我正在 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和两个终端调试这个程序,我在终端窗口中运行radare2并在终端窗口中T1
输入/输出程序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
,当dc
在radare2 中执行命令时,程序输入/输出在终端中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
,但是在radare2 中调试的过程是 rarun2 工具,由于我对 Linux 和逆向工程的了解不是很好,我真的不知道如何继续调试a.out
过程。
所以,总而言之,如果有人可以在这里分享这种调试是否可以用radare2完成,如果可以,如何实现,我将不胜感激?我也尝试过 using nc
,但我没有在这个主题上取得任何进展。