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

Method define_user_data_var

python/binaryview.py:4992–5027  ·  view source on GitHub ↗

``define_user_data_var`` defines a user data variable ``var_type`` at the virtual address ``addr``. :param int addr: virtual address to define the given data variable :param binaryninja.Type var_type: type to be defined at the given virtual address :param Optional[Union[str, _types.CoreSym

(
	    self, addr: int, var_type: StringOrType, name: Optional[Union[str, '_types.CoreSymbol']] = None
	)

Source from the content-addressed store, hash-verified

4990 self.define_auto_symbol(name)
4991
4992 def define_user_data_var(
4993 self, addr: int, var_type: StringOrType, name: Optional[Union[str, '_types.CoreSymbol']] = None
4994 ) -> Optional['DataVariable']:
4995 """
4996 ``define_user_data_var`` defines a user data variable ``var_type`` at the virtual address ``addr``.
4997
4998 :param int addr: virtual address to define the given data variable
4999 :param binaryninja.Type var_type: type to be defined at the given virtual address
5000 :param Optional[Union[str, _types.CoreSymbol]] name: Optionally, additionally define a symbol at this same address
5001 :rtype: Optional[DataVariable]
5002 :Example:
5003
5004 >>> t = bv.parse_type_string("int foo")
5005 >>> t
5006 (<type: int32_t>, 'foo')
5007 >>> bv.define_user_data_var(bv.entry_point, t[0])
5008 <var 0x2394c: int32_t>
5009 >>> bv.define_user_data_var(bv.entry_point + 4, "int", "foo")
5010 <var 0x23950: int32_t>
5011 >>> bv.get_symbol_at(bv.entry_point + 4)
5012 <DataSymbol: "foo" @ 0x23950>
5013 >>> bv.get_data_var_at(bv.entry_point + 4)
5014 <var 0x23950: int32_t>
5015 """
5016
5017 if isinstance(var_type, str):
5018 (var_type, _) = self.parse_type_string(var_type)
5019 tc = var_type._to_core_struct()
5020 core.BNDefineUserDataVariable(self.handle, addr, tc)
5021
5022 if name is not None:
5023 if isinstance(name, str):
5024 name = _types.Symbol(SymbolType.DataSymbol, addr, name)
5025 self.define_user_symbol(name)
5026
5027 return self.get_data_var_at(addr)
5028
5029 def undefine_data_var(self, addr: int, blacklist: bool = True) -> None:
5030 """

Callers 4

typeMethod · 0.45
make_codeFunction · 0.45
propagate_var_nameFunction · 0.45

Calls 5

parse_type_stringMethod · 0.95
define_user_symbolMethod · 0.95
get_data_var_atMethod · 0.95
SymbolMethod · 0.80
_to_core_structMethod · 0.45

Tested by

no test coverage detected