我正在尝试使用 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/