我开发了一个简单的pintool来列出程序的主要可执行映像的所有部分(迭代其所有部分),以及使用$("input[name='nameOfYourRadioButton']").attr("checked", false);
和{{1}的低和高限制};根据Pin,这些返回了图像的明确限制。
令我惊讶的是,这些部分超出了这些功能报告的低限和高限。我做错了什么,或者这些功能是否不准确?
我的图片加载功能:
IMG_HighAddress
在/ bin / ls上运行它的结果:
IMG_LowAddress
答案 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*
。