Beispiel #1
0
    def lines(self):
        count = ctypes.c_ulonglong(0)
        lines = core.BNGetLinearViewCursorLines(self.handle, count)

        result = []
        for i in range(0, count.value):
            func = None
            block = None
            if lines[i].function:
                func = binaryninja.function.Function(
                    self, core.BNNewFunctionReference(lines[i].function))
            if lines[i].block:
                block = binaryninja.basicblock.BasicBlock(
                    core.BNNewBasicBlockReference(lines[i].block), self)
            color = highlight.HighlightColor._from_core_struct(
                lines[i].contents.highlight)
            addr = lines[i].contents.addr
            tokens = binaryninja.function.InstructionTextToken.get_instruction_lines(
                lines[i].contents.tokens, lines[i].contents.count)
            contents = binaryninja.function.DisassemblyTextLine(tokens,
                                                                addr,
                                                                color=color)
            result.append(
                LinearDisassemblyLine(lines[i].type, func, block, contents))

        core.BNFreeLinearDisassemblyLines(lines, count.value)
        return result
Beispiel #2
0
	def _function_action(cls, view, func, action):
		try:
			file_metadata = binaryninja.filemetadata.FileMetadata(handle = core.BNGetFileForView(view))
			view_obj = binaryninja.binaryview.BinaryView(file_metadata = file_metadata, handle = core.BNNewViewReference(view))
			func_obj = function.Function(view_obj, core.BNNewFunctionReference(func))
			action(view_obj, func_obj)
		except:
			binaryninja.log.log_error(traceback.format_exc())
	def _set_current_function(self, ctxt, func):
		try:
			if func:
				func = binaryninja.function.Function(handle = core.BNNewFunctionReference(func))
			else:
				func = None
			self.perform_set_current_function(func)
		except:
			log.log_error(traceback.format_exc())
Beispiel #4
0
	def _get_incoming_flag_value(self, ctxt, reg, func, result):
		try:
			func_obj = binaryninja.function.Function(handle = core.BNNewFunctionReference(func))
			reg_name = self.arch.get_reg_name(reg)
			api_obj = self.perform_get_incoming_flag_value(reg_name, func_obj)._to_api_object()
		except:
			log.log_error(traceback.format_exc())
			api_obj = binaryninja.function.RegisterValue()._to_api_object()
		result[0].state = api_obj.state
		result[0].value = api_obj.value
	def _recognize_medium_level_il(self, ctxt, data, func, il):
		try:
			file_metadata = filemetadata.FileMetadata(handle = core.BNGetFileForView(data))
			view = binaryview.BinaryView(file_metadata = file_metadata, handle = core.BNNewViewReference(data))
			func = function.Function(view, handle = core.BNNewFunctionReference(func))
			il = mediumlevelil.MediumLevelILFunction(func.arch, handle = core.BNNewMediumLevelILFunctionReference(il))
			return self.recognize_medium_level_il(view, func, il)
		except:
			log.log_error(traceback.format_exc())
			return False
Beispiel #6
0
	def _function_is_valid(cls, view, func, is_valid):
		try:
			if is_valid is None:
				return True
			file_metadata = binaryninja.filemetadata.FileMetadata(handle = core.BNGetFileForView(view))
			view_obj = binaryninja.binaryview.BinaryView(file_metadata = file_metadata, handle = core.BNNewViewReference(view))
			func_obj = function.Function(view_obj, core.BNNewFunctionReference(func))
			return is_valid(view_obj, func_obj)
		except:
			binaryninja.log.log_error(traceback.format_exc())
			return False
Beispiel #7
0
	def _get_parameter_var_for_incoming_var(self, ctxt, in_var, func, result):
		try:
			if func is None:
				func_obj = None
			else:
				func_obj = binaryninja.function.Function(handle = core.BNNewFunctionReference(func))
			in_var_obj = binaryninja.function.Variable(func_obj, in_var[0].type, in_var[0].index, in_var[0].storage)
			out_var = self.perform_get_parameter_var_for_incoming_var(in_var_obj, func_obj)
			result[0].type = out_var.source_type
			result[0].index = out_var.index
			result[0].storage = out_var.storage
		except:
			log.log_error(traceback.format_exc())
			result[0].type = in_var[0].type
			result[0].index = in_var[0].index
			result[0].storage = in_var[0].storage