我如何在 gdb 中调用 function(void)

How do I call function(void) in gdb

我是一个完全的逆向初学者。 最近我一直在研究 gdb 以及如何调试程序。

我很怀疑这是否是一个简单的问题

#include <stdio.h>
#include <stdlib.h>

int flag(void){
    puts("okay you got this");
}

int main(void){
    puts("nope try again");
}

所以我成功编译了这个程序,当我尝试运行这个程序时,它给了我主函数输出

nope try again

那么现在我如何调用标志函数在 gdb 中给出“好的,你得到了这个”输出 我尽了最大努力并浏览了博客以获得答案,但我以失败告终 希望我能找到解决方案,并请告诉我我缺少什么以及我需要知道这是如何工作的

你的意思是如何调用 flag() 并跳过 main 中的 puts?,在这种情况下:

(gdb) break main
(gdb) run
(gdb) print flag()
okay you got this
(gdb) break 10
(gdb) jump 10
(gdb) quit

函数 flag 未被调用,很可能它不会出现在可执行文件中,因为不需要

这叫死码消除