gdb-使用管道输入(非参数)进行调试

gdb-使用管道输入(非参数)进行调试,gdb,pipe,Gdb,Pipe,我通常通过以下方式运行我的程序: perl -e 'print "A"x200' | ./vuln_prog STDIN由C++中的 GETSH()/Cux>函数消耗。 如果这只是一个命令参数,我可以通过以下操作打开gdb: gdb ./vuln_prog run $(perl -e 'print "A"x200') 然而,我的场景不是命令参数,而是输入(STDIN?)。我如何在gdb中调试它?我尝试了很多选择,但似乎没有什么真正起作用 我通常只在进程上运行gdb,当它提示用户输入时,输入

我通常通过以下方式运行我的程序:

perl -e 'print "A"x200' | ./vuln_prog

STDIN由C++中的<代码> GETSH()/Cux>函数消耗。

如果这只是一个命令参数,我可以通过以下操作打开gdb:

gdb ./vuln_prog
run $(perl -e 'print "A"x200')
然而,我的场景不是命令参数,而是输入(STDIN?)。我如何在gdb中调试它?我尝试了很多选择,但似乎没有什么真正起作用

我通常只在进程上运行gdb,当它提示用户输入时,输入它,但是我不想只输入“A”。我想键入\x00-\xff中的所有字符,但无法键入。

gdb./vuln\u prog
gdb ./vuln_prog
run < filename_with_input
使用\u输入运行
是否具有
lldb
等效项?@ThomasAhle For lldb等效项如果需要运行命令作为输入,该怎么办?像
cat file.bz2 | bunzip2 |我的程序需要调试
?@iAdjunct我在另一个问题中看到,你可以使用bash语法,即“run<有没有不写入文件的管道方式?为什么你要使用
get
?我的意思是有时候它是可以接受的(例如,如果您只是编写一个快速程序来测试某些内容,或者该程序将仅在受信任的输入下运行)但我很好奇。这不是我的代码。这是为了一个有趣的逆向工程挑战,在那里提供了代码。哦,好吧。
get
是故意使用的,因为它是易受攻击的,就像是作为挑战的可能解决方案的一部分一样?@flarn2006确实是易受攻击的函数。由于它没有绑定-c,我能够进行缓冲区溢出hecking.
r<