我希望你们能帮助我理解迁移条目和ELF部分数据是如何相关的,以及它们是如何被处理和生成的。
我有一个古老的不受支持的工具,它接受一个ELF文件和一个相关的PLF文件(部分链接文件,在构建过程的早期生成),并从它构建一个自定义的可重定位文件,该文件使用在具有严格内存约束的平台(PPC)上。这很好,只是它包含了我们希望在启动后卸载的一个meg初始化代码。因此,我们将所有init代码放在一个自定义节中,以便卸载它,但不幸的是,该工具未能正确处理自定义部分,并且rel文件无效。因此,我的任务是制作一个新工具,正确地生成这个带有自定义部分的可重定位文件。
我在这个工具和生成rel文件方面已经做了相当多的工作,但是目前我正试图弄清楚如何处理节数据和构建重新定位条目等等。我是一个高级程序员,通过这个任务我是一个高级程序员,所以所有的逆向工程业务对我来说都是新的(谢天谢地互联网!)
我找到了精灵夏普,并以此为起点。它允许我加载ELF和PLF文件,并与它们的内容进行交互。从这里开始,我已经反向设计了重新定位文件的大部分头和内容,但它还远远不够准确。当我将旧工具的文件版本与我的文件进行比较时,我发现一些节数据已经被修复,而我的文件直接使用PLF文件中的节数据,并且是简单的。我的意思是,我复制的部分数据包含了一吨"48,0001“,但这些数据都是由旧工具以某种方式修复的。这些字节的意义是什么,对它们做了什么?我也必须生成重新安置条目,但我不知道如何进行。
我在网上发现了一些处理精灵迁移的例子,我的工具里也有类似的东西,但是我仍然不清楚我到底该做什么。对于所有的重新定位类型和它们的公式,我都有一个很好的资源(第4.12.5章这里),但是我仍然不确定我应该使用什么偏移量、节信息等等。
TL;DR
谢谢你读到我冗长的问题!
发布于 2017-04-12 10:53:30
也许objconv工具能帮上忙。它可以将x86 ELF文件中的重新定位类型显示为转储或反汇编。http://www.agner.org/optimize/#objconv
https://stackoverflow.com/questions/16577473
复制相似问题