【发布时间】:2020-02-28 11:54:49
【问题描述】:
我有一个 C++ 程序 a,它有一个 win 函数,它永远不会被调用。
我可以用 gdb 调用它,只需执行jump *win。
问题是,我正在尝试用一个衬里来自动化这个过程:gdb -q a -ex "break *main" -ex "run" -ex "jump *(_Z3winv)"
有没有办法只看到程序本身的输出,没有这个:
inxane@root:~/mysecretfolder$ gdb -q a -ex "break *main" -ex "run" -ex "jump *(_Z3winv)"
warning: /mysecretfolder/pwndbg/gdbinit.py: No such file or directory
Reading symbols from a...(no debugging symbols found)...done.
Breakpoint 1 at 0x8e9
Starting program: /mysecretfolder/a
Breakpoint 1, 0x00005555555548e9 in main ()
Continuing at 0x5555555548ba.
You won!
[Inferior 1 (process 15866) exited with code 040]
(我只想要这个)
You won!
如果有必要,这里是源代码:
#include <iostream>
using namespace std;
void win()
{
cout << "You won!" << endl;
}
int main()
{
cout << "You failed!" << endl;
return 0;
}
【问题讨论】:
-
您的意思是除了根本不在
gdb中运行的明显答案吗? GDB 输出有什么问题?为什么要抑制它?这能解决什么问题? -
我正在尝试运行程序本身未调用的
win函数。它用于逆向工程实践。问题是我不想要 gdb 输出,只想要程序的输出。
标签: c++ gdb reverse-engineering exploit