MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / from_BNRegisterValue

Method from_BNRegisterValue

python/variable.py:86–115  ·  view source on GitHub ↗
(
	    cls, reg_value: Union[core.BNRegisterValue, core.BNRegisterValueWithConfidence],
	    arch: Optional['binaryninja.architecture.Architecture'] = None
	)

Source from the content-addressed store, hash-verified

84
85 @classmethod
86 def from_BNRegisterValue(
87 cls, reg_value: Union[core.BNRegisterValue, core.BNRegisterValueWithConfidence],
88 arch: Optional['binaryninja.architecture.Architecture'] = None
89 ) -> 'RegisterValue':
90 confidence = core.max_confidence
91 if isinstance(reg_value, core.BNRegisterValueWithConfidence):
92 confidence = reg_value.confidence
93 reg_value = reg_value.value
94 if reg_value.state == RegisterValueType.EntryValue:
95 reg = None
96 if arch is not None:
97 reg = arch.get_reg_name(binaryninja.architecture.RegisterIndex(reg_value.value))
98 return EntryRegisterValue(reg_value.value, reg=reg, confidence=confidence)
99 elif reg_value.state == RegisterValueType.ConstantValue:
100 return ConstantRegisterValue(reg_value.value, confidence=confidence)
101 elif reg_value.state == RegisterValueType.ConstantPointerValue:
102 return ConstantPointerRegisterValue(reg_value.value, confidence=confidence)
103 elif reg_value.state == RegisterValueType.StackFrameOffset:
104 return StackFrameOffsetRegisterValue(reg_value.value, confidence=confidence)
105 elif reg_value.state == RegisterValueType.ImportedAddressValue:
106 return ImportedAddressRegisterValue(reg_value.value, confidence=confidence)
107 elif reg_value.state == RegisterValueType.UndeterminedValue:
108 return Undetermined()
109 elif reg_value.state == RegisterValueType.ReturnAddressValue:
110 return ReturnAddressRegisterValue(reg_value.value, confidence=confidence)
111 elif reg_value.state == RegisterValueType.ExternalPointerValue:
112 return ExternalPointerRegisterValue(reg_value.value, reg_value.offset, confidence=confidence)
113 elif reg_value.state & RegisterValueType.ConstantDataValue == RegisterValueType.ConstantDataValue:
114 return ConstantDataRegisterValue(reg_value.value, 0, RegisterValueType(reg_value.state), confidence=confidence, size=reg_value.size)
115 assert False, f"RegisterValueType {reg_value.state} not handled"
116
117 @classmethod
118 def to_BNRegisterValue(cls, reg_value: 'RegisterValue') -> core.BNRegisterValue:

Callers 15

global_pointer_valueMethod · 0.80
valueMethod · 0.80
get_reg_valueMethod · 0.80
get_reg_value_afterMethod · 0.80
get_flag_valueMethod · 0.80
get_flag_value_afterMethod · 0.80
get_stack_contentsMethod · 0.80
get_ssa_reg_valueMethod · 0.80
get_ssa_flag_valueMethod · 0.80
global_pointer_valueMethod · 0.80
get_reg_value_atMethod · 0.80

Tested by

no test coverage detected