部分地址超出了图像区域 - 英特尔Pin

时间:2017-01-09 19:59:38

标签: elf intel-pin

我开发了一个简单的pintool来列出程序的主要可执行映像的所有部分(迭代其所有部分),以及使用$("input[name='nameOfYourRadioButton']").attr("checked", false); 和{{1}的低和高限制};根据Pin,这些返回了图像的明确限制。

令我惊讶的是,这些部分超出了这些功能报告的低限和高限。我做错了什么,或者这些功能是否不准确?

我的图片加载功能:

IMG_HighAddress

在/ bin / ls上运行它的结果:

IMG_LowAddress

1 个答案:

答案 0 :(得分:1)

  

我做错了吗

不一定。

看起来Pin试图将ELF概念映射到特定于Windows的概念,并且没有一对一的映射。

IMG_HighAddress的英特尔documentation说:

Tells the highest address of any code or data loaded by the image.
This is the address of the last byte loaded by the image.

但究竟是什么意思?

ELF图片加载由PT_LOAD段定义。您可以在readelf -Wl a.out的输出中查看细分以及细分到细分的映射。

通常会有两个LOAD段:一个r-x保护涵盖.text.rodata和其他只读部分,第二个{{1}保护,涵盖rw-.data和其他可写部分。

看起来(从您的输出中).bss仅描述了第一个IMG_HighAddress细分。

您还应该注意并非所有部分都是LOAD能够的,并且非LOAD部分通常不会被任何细分受到覆盖(并且不会占用内存在运行时)。各种LOAD部分通常不会.debug*