Ejemplo n.º 1
0
    def parse_dt_symtab(self, dyn):
        '''
        Callback responsible for parsing the DT_SYMTAB dynamic array entry.
        Currently this just locates where the .symtab section is.

        Override this function to perform your own analysis on DT_SYMTAB.

        @type  dyn: ElfXXDynamic
        @param dyn: Dynamic array entry
        '''

        if CPU_WORD_SIZE == 4:
            self.elf_header.sections.append(Elf.Elf32Section())
        elif CPU_WORD_SIZE == 8:
            self.elf_header.sections.append(Elf.Elf64Section())

        symtab = self.elf_header.sections[-1]
        symtab.setName(".symtab")

        if self.elf_header.e_type == Elf.ET_EXEC:
            symtab.sh_offset = dyn.d_value
            #XXX: symtab.sh_offset = dyn.d_value - BASEADDR
        elif self.elf_header.e_type == Elf.ET_DYN:
            symtab.sh_offset = dyn.d_value