diff options
| author | Rusty Wagner <rusty@vector35.com> | 2018-03-07 18:10:55 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2018-03-07 18:11:24 -0500 |
| commit | 1c7349fcf125994f2e577361626fe1fb02eac029 (patch) | |
| tree | 9855e97a3572c41af9f07f27e6b12eb1f117bf5d /python/function.py | |
| parent | 352949f41ea0b66c833f272d2a2a1e5a77a9507c (diff) | |
Add APIs for skipping analysis of functions that are too large, and overriding this behavior
Diffstat (limited to 'python/function.py')
| -rw-r--r-- | python/function.py | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/python/function.py b/python/function.py index f68aa76f..0d796d98 100644 --- a/python/function.py +++ b/python/function.py @@ -26,7 +26,8 @@ import ctypes import _binaryninjacore as core from enums import (FunctionGraphType, BranchType, SymbolType, InstructionTextTokenType, HighlightStandardColor, HighlightColorStyle, RegisterValueType, ImplicitRegisterExtend, - DisassemblyOption, IntegerDisplayType, InstructionTextTokenContext, VariableSourceType) + DisassemblyOption, IntegerDisplayType, InstructionTextTokenContext, VariableSourceType, + FunctionAnalysisSkipOverride) import architecture import platform import highlight @@ -817,6 +818,32 @@ class Function(object): for i in block: yield i + @property + def too_large(self): + """Whether the function is too large to automatically perform analysis (read-only)""" + return core.BNIsFunctionTooLarge(self.handle) + + @property + def analysis_skipped(self): + """Whether automatic analysis was skipped for this function""" + return core.BNIsFunctionAnalysisSkipped(self.handle) + + @analysis_skipped.setter + def analysis_skipped(self, skip): + if skip: + core.BNSetFunctionAnalysisSkipOverride(self.handle, FunctionAnalysisSkipOverride.AlwaysSkipFunctionAnalysis) + else: + core.BNSetFunctionAnalysisSkipOverride(self.handle, FunctionAnalysisSkipOverride.NeverSkipFunctionAnalysis) + + @property + def analysis_skip_override(self): + """Override for skipping of automatic analysis""" + return FunctionAnalysisSkipOverride(core.BNGetFunctionAnalysisSkipOverride(self.handle)) + + @analysis_skip_override.setter + def analysis_skip_override(self, override): + core.BNSetFunctionAnalysisSkipOverride(self.handle, override) + def __iter__(self): count = ctypes.c_ulonglong() blocks = core.BNGetFunctionBasicBlockList(self.handle, count) @@ -1836,6 +1863,11 @@ class FunctionGraph(object): return result @property + def has_blocks(self): + """Whether the function graph has at least one block (read-only)""" + return core.BNFunctionGraphHasBlocks(self.handle) + + @property def width(self): """Function graph width (read-only)""" return core.BNGetFunctionGraphWidth(self.handle) |
