Пример #1
0
    def basic_block(self):
        """Basic block associated with this part of the flow graph"""
        block = core.BNGetFlowGraphBasicBlock(self.handle)
        if not block:
            return None
        func_handle = core.BNGetBasicBlockFunction(block)
        if not func_handle:
            core.BNFreeBasicBlock(block)
            return None

        view = binaryview.BinaryView(
            handle=core.BNGetFunctionData(func_handle))
        func = function.Function(view, func_handle)

        if core.BNIsLowLevelILBasicBlock(block):
            block = lowlevelil.LowLevelILBasicBlock(
                view, block,
                lowlevelil.LowLevelILFunction(
                    func.arch, core.BNGetBasicBlockLowLevelILFunction(block),
                    func))
        elif core.BNIsMediumLevelILBasicBlock(block):
            block = mediumlevelil.MediumLevelILBasicBlock(
                view, block,
                mediumlevelil.MediumLevelILFunction(
                    func.arch,
                    core.BNGetBasicBlockMediumLevelILFunction(block), func))
        else:
            block = basicblock.BasicBlock(block, view)
        return block
Пример #2
0
	def function(self):
		"""Basic block function (read-only)"""
		if self._func is not None:
			return self._func
		func = core.BNGetBasicBlockFunction(self.handle)
		if func is None:
			return None
		self._func =binaryninja.function.Function(self.view, func)
		return self._func
	def _set_current_basic_block(self, ctxt, block):
		try:
			if block:
				func = core.BNGetBasicBlockFunction(block)
				if func is None:
					block = None
				else:
					block = binaryninja.basicblock.BasicBlock(core.BNNewBasicBlockReference(block),
						binaryninja.binaryview.BinaryView(handle = core.BNGetFunctionData(func)))
					core.BNFreeFunction(func)
			else:
				block = None
			self.perform_set_current_basic_block(block)
		except:
			log.log_error(traceback.format_exc())