如何在ELF文件中找到变量类型?

时间:2016-12-01 05:29:14

标签: c linux elf

我想更改ELF文件中的全局结构。 我首先想知道全局变量是否是一个结构? 但我看到的唯一信息是变量的名称和大小。

1 个答案:

答案 0 :(得分:5)

你找不到它。 ELF格式的类型信息非常有限(并且不知道某个全局变量是struct还是int;它主要知道变量sizeof。请参阅elf(5)

但是,如果您编译程序(以及它正在使用的库)以获得调试支持(例如使用g++ -Wall -g)。然后ELF文件包含其他调试部分,通常使用DWARF格式。可以使用strip命令从ELF文件中删除这些信息。请参阅strip(1)& readelf(1)& objdump(1)

但你真的想使用source code。因此获取程序的源代码(因为Linux主要由free software构成,这通常是可能的)并重新编译它(当然还要研究程序的源代码)。也许你想要(但这确实需要几周的工作)来定制你的编译器(例如通过编写你自己的GCC插件,或者使用GCC MELT,或者自定义你的Clang编译器)并使用它来重新编译代码(并且具体处理)所有全局变量声明)。

相关问题