gpt4 book ai didi

c - 反汇编 C 代码并检查堆栈

转载 作者:行者123 更新时间:2023-11-30 20:42:03 24 4
gpt4 key购买 nike

所以我有一些简单的 C 代码来创建大小为 512 字节的缓冲区:

 #include <sys/types.h>
#include <netinet/in.h>

#include <stdio.h>
#include <ctype.h>

main(argc, argv)
char *argv[];
{
char line[512];
gets(line);
}

这是否意味着为该缓冲区分配了 512 个字节? GDB 中有没有一种方法可以反汇编编译后的二进制文件,我们可以看到类似的内容

  • 堆栈和返回地址之间的距离
  • 什么参数被传递给“gets()”函数……例如地址?

我尝试使用 GDB 逐步完成此操作,但找不到检查此类内容的方法

最佳答案

您可以查看“strace”命令行工具。它将列出所有内部系统调用和相应的参数。它还可以让您了解分配了多少内存。

请注意,您应该谨慎使用 gets,因为它不会检查缓冲区溢出。

来自手册页:

gets() 从 stdin 读取一行到 s 指向的缓冲区,直到出现终止换行符或 EOF, 替换为‘\0’。不执行缓冲区溢出检查(请参阅下面的错误)。

关于c - 反汇编 C 代码并检查堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55746178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com