ELF解析:使用pyelftools直接访问DIE

时间:2012-05-09 19:59:18

标签: python binary elf dwarf pyelftools

我需要一种直接使用偏移来访问DIE的方法。到目前为止,我发现计算单元(CU)对象有一种方法,您可以从其偏移量访问DIE。

即。 :

cu._get_DIE(die.attributes['DW_AT_type'].value)

但是,如果您尝试访问当前CU之外的DIE,则您将超出界限,因为该DIE未在该CU下编入索引。

我能想到的最好的方法是循环使用CU,并使用偏移作为索引创建一个全面的DIE列表。

似乎应该有一个DWARFInfo类的方法,只要你有它的偏移就可以访问任何DIE。

我需要这样做的原因是因为我循环遍历所有CU以生成我的全局变量列表,我需要在不同的CU中引用DIE来检索类型信息。

1 个答案:

答案 0 :(得分:0)

pyelftools似乎将引用表示为相对于编译单元的值,因此您可能需要在全局变量列表中包含CU信息。

结帐https://github.com/eliben/pyelftools/issues/27。它表示引用可以相对于编译单元。事实上,DWARF规范也说明了这一点:http://dwarfstd.org/doc/dwarf-2.0.0.pdf#page=71