相关疑难解决方法(0)

如何加载程序读取stdin并在gdb中获取参数?

我有一个程序从stdin获取输入,并从命令行获取一些参数.它看起来像这样:

cat input.txt > myprogram -path "/home/user/work"
Run Code Online (Sandbox Code Playgroud)

我尝试使用gcs在emacs中调试代码,通过Mx gdb,我尝试使用以下命令加载程序:

gdb cat input.txt > myprogram -path "/home/user/work"
Run Code Online (Sandbox Code Playgroud)

但是,gdb不喜欢它.

问题来自这里.不幸的是我不理解解决方案,并且不确定除了使用该-g选项进行编译并运行命令Mx gdb 之外还要做什么.

emacs redirect gdb command-line-arguments

95
推荐指数
4
解决办法
6万
查看次数

无法获取mac os x lldb进程来读取STDIN

是我还是lldb for mac os x(替换gdb)不允许你将文件传递给stdin,供被调试的进程使用?

阅读说明没有参考.

我已经完成并安装了gnu gdb,但是想利用我认为改进的lldb功能?

lldb

21
推荐指数
1
解决办法
6035
查看次数

如何将任意字节发送到 gdb 中程序的 STDIN?

我正在为学生开发缓冲区溢出练习。在这种情况下,您通常必须提供任意字节作为程序的输入(返回地址)。

假设这个例子:

#import <stdio.h>
#import <string.h>

void func() {
    char buf[4];
    gets(buf);
}

int main (int argc, char** argv) {
    func();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

通常我会用 gdb 进行试验,直到找到一个解决方案,然后可以将其公式化为

python -c 'print "A"*8+"\x08\x04\88\72"' | ./program
Run Code Online (Sandbox Code Playgroud)

在开发越来越复杂的练习的同时,找到解决方案的难度也在增加。有时通过覆盖gdb中的返回地址

 set {int}address_of_address = new_address
Run Code Online (Sandbox Code Playgroud)

有效,但 python 方法无效。调试它并能够在程序运行时在 gdb 中输入像“\x04”这样的字节会很好,分析效果。

有没有办法做到这一点?

这个问题似乎相关,但用 python 方法回答:从标准输入发送任意字节到 fgets

我的不止于此:-/

c encoding gdb reverse-engineering buffer-overflow

6
推荐指数
1
解决办法
5023
查看次数