linux – 重新排序ELF文件部分的简单方法
我正在寻找一种简单的方法来重新排序ELF文件部分.我有一系列自定义部分,我希望所有部分按特定顺序对齐. 我发现如何做到这一点的唯一方法是使用链接器脚本.但是,文档指出指定自定义链接描述文件会覆盖默认值.默认的链接描述文件中包含很多内容,我不想在自定义脚本中复制只是为了让三个部分按特定顺序排在一起.对链接器行为进行硬编码似乎不太灵活. 我为什么要这样做?我有一段数据需要知道(开始和结束)的运行时内存位置.所以我创建了两个额外的部分并将sentinel变量放入其中.然后,我想使用这些变量的内存位置来了解内存中未知部分的范围.
在上面的例子中,我知道.targetSection中的数据位于markerA和markerB的地址之间. 还有另一种方法来实现这一目标吗?是否有库可以让我读取当前正在执行的ELF图像并确定部分位置和大小? 最佳答案 您可以通过分析ELF文件格式来获取已加载部分的地址.可以找到细节,例如在>工具接口标准(TIS) 对于一个简短的印象,哪些信息是值得的,看看readelf
返回包含的所有部分的列表. >映射到内存的部分是键入的PROGBITS. 有几种方法可以确定可执行文件/共享对象的加载地址: >你可以解析/ proc / [pid] / maps(第一列包含加载地址). [pid]是进程ID 获取一些ELF信息库 >自由 可能是一个有用的公司(我在研究了上面提到的TIS后检测到它,所以我只是简单地看一下它,我不知道更深入的细节) 我希望这个可能解决方案的草图会有所帮助. (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |