blob: aa4672eef7e0a8314547a6fa65b72779e4bbe1a4 [file] [log] [blame]
ebendersec1e0882011-09-07 15:36:11 +03001import sys
ebenders198538a2011-09-07 11:12:47 +03002from elftools.elf.structs import ELFStructs
3
ebendersec1e0882011-09-07 15:36:11 +03004# read a little-endian, 64-bit file
ebenderse790d0d2011-09-07 15:21:07 +03005es = ELFStructs(True, 64)
6
ebenderse790d0d2011-09-07 15:21:07 +03007stream = open('binfiles/z.elf', 'rb')
ebendersec1e0882011-09-07 15:36:11 +03008eheader = es.Elf_Ehdr.parse_stream(stream)
9
10print eheader
11
12shtable_offset = eheader.e_shoff
13strtable_section_offset = shtable_offset + eheader.e_shstrndx * eheader.e_shentsize
14
15# get to the section header for the sh string table
16print strtable_section_offset
17stream.seek(strtable_section_offset)
18sheader = es.Elf_Shdr.parse_stream(stream)
19print sheader
20
21# yay, looks correct!!
22stream.seek(sheader.sh_offset)
23buf = stream.read(sheader.sh_size)
24for c in buf:
25 sys.stdout.write('%02X' % ord(c))
26
27
ebenderse790d0d2011-09-07 15:21:07 +030028
29
30#~ print es.Elf_Ehdr