c - 'Segment type: Externs'在IDA中是什么意思?

标签 c linker loader elf ida

我正在尝试使用 IDA pro 分析动态链接的 64 位 ELF 文件,我发现一个带有 extern tpye 的段,它位于 .bss,如下

extern:00000000006021C0 ; Segment type: Externs
extern:00000000006021C0 ; extern
extern:00000000006021C0 ; void free(void *ptr)
extern:00000000006021C0        extrn free:near      ; DATA XREF: .got.plt:off_602018o

但是,当我使用 gdb 在运行时调试它时,我发现这个“extern”段仅包含零!该段中除了零之外没有任何有效数据。而且,没有关于该段的权限的描述,看起来这个段根本不存在。

既然GOT中有DATA XREF,也许和导入函数有关?但我找不到相关文档,不知道IDA是如何识别的,它到底是什么?

谢谢!

最佳答案

extern 不是真正的段。是IDA创建的伪段,用来表示其他模块中地址未知的符号; GOT 通常包含指向这些的指针。在调试过程中,它可能被 .bss 覆盖或被操作系统加载程序清除的堆栈区域,这就是您在那里看到零的原因。

关于c - 'Segment type: Externs'在IDA中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37638506/

相关文章:

c - 多个 .c 和 .h 文件的 Makefile

c++ - 请求 ' ' 中属于 non_clas 的成员 ' ' ... Vtable,链接器错误?

android - Xamarin.Forms 获取 Mono.Linker.MarkException : Error processing method when compiling in release mode

three.js - 在 Three.js 中使用 OBJMTLoader 的 WebGL 导入模型失败

javascript - 在 react/redux 应用程序中单击按钮添加加载程序

c - C中结构体(二维数组)的静态成员(二维数组)

c - 将 char[8] 转换为 double 时出现舍入问题

python - "unresolved external symbol"- 在 Windows 上将 Cython 扩展链接到 C 库时出错

c - 链接描述文件 - RAM 和 ROM 相同的内存空间

c++ - Linux 链接器/加载器的环境覆盖