def __init__(self, filename, raw_type, raw_base, raw_big_endian, load_symbols=True): import capstone as CAPSTONE self.code = {} self.binary = Binary(filename, raw_type, raw_base, raw_big_endian) arch, mode = self.binary.get_arch() if arch is None or mode is None: raise ExcArch(self.binary.get_arch_string()) if load_symbols: self.binary.load_symbols() self.binary.load_data_sections() self.capstone = CAPSTONE self.md = CAPSTONE.Cs(arch, mode) self.md.detail = True self.arch = arch self.mode = mode
def __init__(self, filename, raw_type, raw_base, raw_big_endian, sym, rev_sym, jmptables, inline_comments, previous_comments, load_symbols=True): import capstone as CAPSTONE self.code = {} self.binary = Binary(filename, raw_type, raw_base, raw_big_endian) arch, mode = self.binary.get_arch() if arch is None or mode is None: raise ExcArch(self.binary.get_arch_string()) if load_symbols: self.binary.load_symbols() else: self.binary.symbols = sym self.binary.reverse_symbols = rev_sym self.binary.load_section_names() self.binary.load_data_sections() self.capstone = CAPSTONE self.md = CAPSTONE.Cs(arch, mode) self.md.detail = True self.arch = arch self.mode = mode self.jmptables = jmptables self.inline_comments = inline_comments self.previous_comments = previous_comments
def __init__(self, filename, raw_type, raw_base, raw_big_endian, database): import capstone as CAPSTONE self.capstone_inst = {} # capstone instruction cache if database.loaded: self.mem = database.mem else: self.mem = Memory() database.mem = self.mem self.binary = Binary(self.mem, filename, raw_type, raw_base, raw_big_endian) self.binary.load_section_names() arch, mode = self.binary.get_arch() if arch is None or mode is None: raise ExcArch(self.binary.get_arch_string()) self.jmptables = database.jmptables self.user_inline_comments = database.user_inline_comments self.internal_inline_comments = database.internal_inline_comments self.user_previous_comments = database.user_previous_comments self.internal_previous_comments = database.internal_previous_comments self.functions = database.functions self.func_id = database.func_id self.end_functions = database.end_functions self.xrefs = database.xrefs # TODO: is it a global constant or $gp can change during the execution ? self.mips_gp = database.mips_gp if database.loaded: self.binary.symbols = database.symbols self.binary.reverse_symbols = database.reverse_symbols self.binary.imports = database.imports else: self.binary.load_symbols() database.symbols = self.binary.symbols database.reverse_symbols = self.binary.reverse_symbols database.imports = self.binary.imports self.capstone = CAPSTONE self.md = CAPSTONE.Cs(arch, mode) self.md.detail = True self.arch = arch self.mode = mode for s in self.binary.iter_sections(): s.big_endian = self.mode & self.capstone.CS_MODE_BIG_ENDIAN # TODO: useful ? if not database.loaded: self.mem.add(s.start, s.end, MEM_UNK)
def __init__(self, filename, raw_type): import capstone as CAPSTONE self.code = {} self.binary = Binary(filename, raw_type) self.raw_type = raw_type arch, mode = self.binary.get_arch() if arch is None or mode is None: raise ExcArch(self.binary.get_arch_string()) self.md = CAPSTONE.Cs(arch, mode) self.md.detail = True self.arch = arch self.mode = mode
def __init__(self, filename, raw_type, raw_base, raw_big_endian, sym, rev_sym, jmptables, inline_comments, previous_comments, load_symbols=True, mips_gp=-1): import capstone as CAPSTONE self.code = {} self.binary = Binary(filename, raw_type, raw_base, raw_big_endian) # TODO: is it a global constant or $gp can change during the execution ? self.mips_gp = mips_gp arch, mode = self.binary.get_arch() if arch is None or mode is None: raise ExcArch(self.binary.get_arch_string()) if load_symbols: self.binary.load_symbols() else: self.binary.symbols = sym self.binary.reverse_symbols = rev_sym self.binary.load_section_names() self.capstone = CAPSTONE self.md = CAPSTONE.Cs(arch, mode) self.md.detail = True self.arch = arch self.mode = mode self.jmptables = jmptables self.inline_comments = inline_comments self.previous_comments = previous_comments