pyelftool 获取符号绝对地址
pyelftool get symbol absolute address
我的目标:使用 pyelftool 从 elf 文件中检索变量绝对位置和函数绝对地址,以自动化白盒测试的断点放置。
我的代码:
import elftools
from elftools.elf.elffile import ELFFile
filename="./DemoBm.elf"
with open(filename, 'rb') as f:
elffile = ELFFile(f)
if not elffile.has_dwarf_info():
print(' file has no DWARF info')
exit()
dwarfinfo = elffile.get_dwarf_info()
pubnames = dwarfinfo.get_pubnames()
pubtypes = dwarfinfo.get_pubtypes()
for elem in pubnames:
print(elem, pubnames[elem])
我的问题:
上面的代码 returns cu_ofs 和 die_ofs,例如
memSegment NameLUTEntry(cu_ofs=47377, die_ofs=47586)
Eep_GetData NameLUTEntry(cu_ofs=78737, die_ofs=78936)
cu_ofs 和 die_ofs 不是目标上的真实地址(例如,我可以使用 Ozone 检查,从源代码跳到反汇编视图) - 第一个地址目标函数的汇编指令是0x2524.
如何使用 pyelftool 从 elf 文件中检索函数和变量的地址?
找到了我一直在寻找的答案,至少对我来说是这样:
def bkpt_addr_get(self, funcname):
info = self.dwarfinfo.get_DIE_from_lut_entry(self.pubnames[funcname])
funct_addr=info.attributes["DW_AT_low_pc"].value
if self.verbose:
print(hex(funct_addr))
return hex(funct_addr)
我的目标:使用 pyelftool 从 elf 文件中检索变量绝对位置和函数绝对地址,以自动化白盒测试的断点放置。
我的代码:
import elftools
from elftools.elf.elffile import ELFFile
filename="./DemoBm.elf"
with open(filename, 'rb') as f:
elffile = ELFFile(f)
if not elffile.has_dwarf_info():
print(' file has no DWARF info')
exit()
dwarfinfo = elffile.get_dwarf_info()
pubnames = dwarfinfo.get_pubnames()
pubtypes = dwarfinfo.get_pubtypes()
for elem in pubnames:
print(elem, pubnames[elem])
我的问题: 上面的代码 returns cu_ofs 和 die_ofs,例如
memSegment NameLUTEntry(cu_ofs=47377, die_ofs=47586)
Eep_GetData NameLUTEntry(cu_ofs=78737, die_ofs=78936)
cu_ofs 和 die_ofs 不是目标上的真实地址(例如,我可以使用 Ozone 检查,从源代码跳到反汇编视图) - 第一个地址目标函数的汇编指令是0x2524.
如何使用 pyelftool 从 elf 文件中检索函数和变量的地址?
找到了我一直在寻找的答案,至少对我来说是这样:
def bkpt_addr_get(self, funcname):
info = self.dwarfinfo.get_DIE_from_lut_entry(self.pubnames[funcname])
funct_addr=info.attributes["DW_AT_low_pc"].value
if self.verbose:
print(hex(funct_addr))
return hex(funct_addr)