def main(): if len(sys.argv) != 2: print('Usage: {} <file>'.format(sys.argv[0])) return -1 target = sys.argv[1] bv = BinaryView.open(target) view_type = next(bvt for bvt in bv.available_view_types if bvt.name != 'Raw') if not view_type: print('Error: Unable to get any other view type besides Raw') return -1 bv = bv.file.get_view_of_type(view_type.name) bv.update_analysis_and_wait() print_syscalls(bv)
def initialize_disassembler(self, program_path): import binaryninja as bn from binaryninja import BinaryView as bview from .disasm import BinjaILDisasm # see if we have cached the db db_name = "." + os.path.basename(program_path) + ".bnfm" dbpath = os.path.join(os.path.dirname(program_path), db_name) if not os.path.isfile(dbpath): bv = bn.binaryview.BinaryViewType.get_view_of_file(program_path) bv.update_analysis_and_wait() # cache for later bv.create_database(dbpath) else: fm = bn.FileMetadata() db = fm.open_existing_database(dbpath) vtypes = filter(lambda x: x.name != "Raw", bview.open(program_path).available_view_types) bv = db.get_view_of_type(vtypes[0].name) bv.update_analysis_and_wait() self.program_path = program_path self.view = bv self.disasm = BinjaILDisasm(bv)