diff options
| author | Brian Potchik <brian@vector35.com> | 2019-06-13 03:55:00 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2019-06-13 03:55:00 -0400 |
| commit | 977a0caa78e9a8ddb958baf535df881bbaaf05b4 (patch) | |
| tree | e2d34525ef120ef9868d5e136b8423527c0c5bbd /python/binaryview.py | |
| parent | 2dab57d29589fcc9e3896102ba222c7d1d4671cb (diff) | |
Initial rebase on file load support.
Diffstat (limited to 'python/binaryview.py')
| -rw-r--r-- | python/binaryview.py | 29 |
1 files changed, 26 insertions, 3 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) |
