summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/binaryview.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index fe525bec..5104c4f2 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -3438,21 +3438,23 @@ class BinaryView:
name = _types.Symbol(SymbolType.DataSymbol, addr, name)
self.define_auto_symbol(name)
- def define_user_data_var(self, addr:int, var_type:StringOrType, name:Optional[Union[str, '_types.CoreSymbol']]=None) -> None:
+ def define_user_data_var(self, addr:int, var_type:StringOrType, name:Optional[Union[str, '_types.CoreSymbol']]=None) -> Optional['DataVariable']:
"""
``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.CoreSymbol]] name: Optionally, additionally define a symbol at this same address
- :rtype: None
+ :rtype: Optional[DataVariable]
:Example:
>>> t = bv.parse_type_string("int foo")
>>> t
(<type: int32_t>, 'foo')
>>> bv.define_user_data_var(bv.entry_point, t[0])
+ <var 0x2394c: int32_t>
>>> bv.define_user_data_var(bv.entry_point + 4, "int", "foo")
+ <var 0x23950: int32_t>
>>> bv.get_symbol_at(bv.entry_point + 4)
<DataSymbol: "foo" @ 0x23950>
>>> bv.get_data_var_at(bv.entry_point + 4)
@@ -3469,6 +3471,8 @@ class BinaryView:
name = _types.Symbol(SymbolType.DataSymbol, addr, name)
self.define_user_symbol(name)
+ return self.get_data_var_at(addr)
+
def undefine_data_var(self, addr:int) -> None:
"""
``undefine_data_var`` removes the non-user data variable at the virtual address ``addr``.
@@ -7935,7 +7939,6 @@ class StructuredDataView(object):
return rv
-
@dataclass
class TypedDataReader:
type:'_types.Type'