如何使用 argv[0] 中的相对路径调试二进制文件?

逆向工程 linux 数据库
2021-07-03 13:25:34

我有一个test要使用 gdb 调试的二进制文件正如你看到的pwd/tmp

$ gdb
(gdb) file test
Reading symbols from /tmp/test...(no debugging symbols found)...done.
(gdb) pwd
Working directory /tmp
(gdb) run
Starting program: /tmp/test

或者

$ pwd
/tmp
$ gdb test
Reading symbols from /tmp/test...(no debugging symbols found)...done.
The target architecture is assumed to be i386
(gdb) run
Starting program: /tmp/test

问题是 gdb 使用绝对路径/tmp/test而不是 realtiv 路径执行文件test这意味着argv[0]="/tmp/test".

如何让 gdb 执行具有相对路径 ( argv[0]="test")的文件

1个回答

用我以前不知道的一个很酷的技巧自己想出来 - set exec-wrapper

$ cat wrapper.sh
#!/bin/bash
p="test"
exec -a "$p" "$@"

在 gdb 中

(gdb) set exec-wrapper ./wrapper.sh

通过这种方式,您可以将 设置argv[0]为您想要的任何内容。

来源:https : //sourceware.org/ml/gdb/2013-05/msg00049.html