summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/binaryview.py29
-rw-r--r--python/examples/triage/files.py1
-rw-r--r--python/settings.py9
3 files changed, 32 insertions, 7 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index 460c028d..d68b8b24 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -663,6 +663,12 @@ class BinaryViewType(with_metaclass(_BinaryViewTypeMetaclass, object)):
def is_valid_for_data(self, data):
return core.BNIsBinaryViewTypeValidForData(self.handle, data.handle)
+ def get_default_load_settings_for_data(self, data):
+ return core.BNGetBinaryViewDefaultLoadSettingsForData(self.handle, data.handle)
+
+ def get_load_settings_for_data(self, data):
+ return core.BNGetBinaryViewLoadSettingsForData(self.handle, data.handle)
+
def register_arch(self, ident, endian, arch):
core.BNRegisterArchitectureForViewType(self.handle, ident, endian, arch.handle)
@@ -1007,6 +1013,7 @@ class BinaryView(object):
cls._registered_cb.context = 0
cls._registered_cb.create = cls._registered_cb.create.__class__(cls._create)
cls._registered_cb.isValidForData = cls._registered_cb.isValidForData.__class__(cls._is_valid_for_data)
+ cls._registered_cb.getLoadSettingsForData = cls._registered_cb.getLoadSettingsForData.__class__(cls._get_load_settings_for_data)
cls.registered_view_type = BinaryViewType(core.BNRegisterBinaryViewType(cls.name, cls.long_name, cls._registered_cb))
cls._registered = True
@@ -1031,6 +1038,14 @@ class BinaryView(object):
return False
@classmethod
+ def _get_load_settings_for_data(cls, ctxt, data):
+ try:
+ return cls.get_load_settings_for_data(BinaryView(handle=core.BNNewViewReference(data)))
+ except:
+ log.log_error(traceback.format_exc())
+ return None
+
+ @classmethod
def open(cls, src, file_metadata=None):
binaryninja._init_plugins()
if isinstance(src, fileaccessor.FileAccessor):
@@ -2060,8 +2075,7 @@ class BinaryView(object):
def perform_is_relocatable(self):
"""
- ``perform_is_relocatable`` implements a check which returns true if the BinaryView is relocatable. Defaults to
- True.
+ ``perform_is_relocatable`` implements a check which returns true if the BinaryView is relocatable. Defaults to False
.. note:: This method **may** be implemented for custom BinaryViews that are relocatable.
@@ -2070,7 +2084,7 @@ class BinaryView(object):
:return: True if the BinaryView is relocatable, False otherwise
:rtype: boolean
"""
- return True
+ return False
def create_database(self, filename, progress_func=None):
"""
@@ -4411,6 +4425,15 @@ class BinaryView(object):
"""
core.BNBinaryViewRemoveMetadata(self.handle, key)
+ def get_load_settings(self, type_name):
+ settings_id = core.BNBinaryViewGetLoadSettings(self.handle, type_name)
+ if settings_id == "":
+ return None
+ return settings_id
+
+ def set_load_settings(self, type_name, load_settings):
+ core.BNBinaryViewSetLoadSettings(self.handle, type_name, load_settings)
+
def __setattr__(self, name, value):
try:
object.__setattr__(self, name, value)
diff --git a/python/examples/triage/files.py b/python/examples/triage/files.py
index 84273657..05281057 100644
--- a/python/examples/triage/files.py
+++ b/python/examples/triage/files.py
@@ -70,7 +70,6 @@ class TriageFilePicker(QWidget):
failedToOpen.append(filename)
continue
- f.createBinaryViews()
for data in f.getAllDataViews():
Settings().set_string("analysis.mode", Settings().get_string("triage.analysisMode"), data)
Settings().set_bool("triage.preferSummaryView", True, data)
diff --git a/python/settings.py b/python/settings.py
index b16e9763..8bfe7255 100644
--- a/python/settings.py
+++ b/python/settings.py
@@ -81,10 +81,13 @@ class Settings(object):
return out_list
def update_property(self, id, setting_property):
- return core.BNSettingsUpdateProperty(self._registry_id, tr(), id, setting_property)
+ return core.BNSettingsUpdateProperty(self.registry_id, id, setting_property)
- def get_schema(self):
- return core.BNSettingsGetSchema(self._registry_id)
+ def deserialize_schema(self, schema):
+ return core.BNSettingsDeserializeSchema(self.registry_id, schema)
+
+ def serialize_schema(self):
+ return core.BNSettingsSerializeSchema(self.registry_id)
def copy_value(self, dest_registry_id, id):
return core.BNSettingsCopyValue(self._registry_id, dest_registry_id, id)