我想将一些信息添加到ELF文件中,但理想情况下,需要这样做,即程序可以轻松地读取这些信息,而无需理解ELF或使用标准语言库之外的工具。我想简单地将这些数据附加到ELF文件的末尾(使用某种哨兵来指示数据的开始,这样读取程序就可以向后查找哨兵),但我想确保这不会首先违反ELF规范。我不感兴趣的是,一个特定的加载程序是否能很好地处理这些附加的数据;我想知道ELF规范本身是否保证了任何东西,这样我就可以知道不同的ELF兼容加载器会对它感到满意。
我看到以前有人问过这样的问题,但要么假设附加的问题是可以的,要么没有直接的答复:
据我所知,ELF规范在这里:
我无法通过一些搜索来确定我想要的属性是否明确地被该规范所允许。
发布于 2012-04-11 13:36:21
规范并没有真正说明任何关于它的内容,因此人们可能会认为“拥有跟踪数据是一种未定义的行为”。另一方面,ELF规范非常清楚它的期望:“节和段没有指定的顺序。只有ELF标头在文件中有固定的位置。“,这给了足够的空间以这样或那样的方式嵌入数据,使用一个节,或者不使用一个,这就是未引用的数据!
这种“数据自由”至少在20世纪80年代末就被利用了;考虑一下“自解压缩档案”,其中一个通用的解包代码存根在尾随的数据部分被释放。
事实上,您甚至可以在非可执行数据格式(如RIFF和PNG )中找到这种隐式特性。当然,并非所有格式都允许这样做;尤其是那些将数据定义为运行到EOF的格式,而不是存储在某个标头中的固定长度的数据。(考虑ZIP:追加数据是不可能的,但前提是,这就是导致EXE被解压缩程序和操作系统都读取的原因。)
使用这样的未引用数据有一个缺点:当读取和保存文件时,可能会丢失这些数据。
发布于 2012-04-11 18:44:28
可以在ELF文件中添加额外的数据(因为您可以向ELF添加新的段和新的部分),但是您应该有(或改进)工具来处理“改进”的ELF,这可能是一个很大的负担。不要忘记很好地记录您正在做的事情(如果可能的话,可以在一个可自由访问的文档中)。
https://stackoverflow.com/questions/10106447
复制相似问题