繁体   English   中英

在 elf 文件中查找全局变量的位置

[英]Find location of global variable in elf file

我想编写一个可以找到全局变量位置的 C++ 程序。 这是相关的自述

...
 <1><98>: Abbrev Number: 7 (DW_TAG_variable)
    <99>   DW_AT_name        : (indirect string, offset: 0x32): sbox_bit
    <9d>   DW_AT_decl_file   : 1
    <9e>   DW_AT_decl_line   : 3
    <9f>   DW_AT_type        : <0x81>
    <a3>   DW_AT_external    : 1
    <a3>   DW_AT_location    : 5 byte block: 3 e8 0 1 0     (DW_OP_addr: 100e8)
...

我已经得到了带有标签“DW_TAG_variable”和 dwarf_diename“sbox_bit”的 DIE。 从这里找到这个变量的位置应该不会太难,但我无法弄清楚。

我想编写一个可以找到全局变量位置的 C++ 程序。

你“错了”。

虽然可以从调试信息(您提供的readelf输出)中找到全局变量的位置(以及它的类型、大小、元素数量,如果它是一个数组等),但找到它要简单得多地址来自符号表(即从nm输出)。

可以使用libelf或手动完成符号表的解析(如果您的主机与目标匹配,则很容易做到)。 例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM