From b8f49d5fecc354ad25533efad8660f4c07b9879b Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 27 Jul 2018 20:24:10 -0400 Subject: Expose the ability to suppress analysis of auto-discovered functions --- binaryninjaapi.h | 2 ++ binaryninjacore.h | 6 +++++- binaryview.cpp | 12 ++++++++++++ python/binaryview.py | 9 +++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/binaryninjaapi.h b/binaryninjaapi.h index f2c15fde..4678f1eb 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -1374,6 +1374,8 @@ namespace BinaryNinja void SetParametersForAnalysis(BNAnalysisParameters params); uint64_t GetMaxFunctionSizeForAnalysis(); void SetMaxFunctionSizeForAnalysis(uint64_t size); + bool GetNewAutoFunctionAnalysisSuppressed(); + void SetNewAutoFunctionAnalysisSuppressed(bool suppress); }; class BinaryData: public BinaryView diff --git a/binaryninjacore.h b/binaryninjacore.h index fda26d47..99f14f4e 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -1509,6 +1509,7 @@ extern "C" uint64_t maxFunctionAnalysisTime; size_t maxFunctionUpdateCount; size_t maxFunctionSubmitCount; + bool suppressNewAutoFunctionAnalysis; }; struct BNDownloadInstanceOutputCallbacks @@ -1820,7 +1821,8 @@ extern "C" NoSkipReason, AlwaysSkipReason, ExceedFunctionSizeSkipReason, - ExceedFunctionAnalysisTimeSkipReason + ExceedFunctionAnalysisTimeSkipReason, + NewAutoFunctionAnalysisSuppressedReason }; BINARYNINJACOREAPI char* BNAllocString(const char* contents); @@ -2520,6 +2522,8 @@ extern "C" BINARYNINJACOREAPI void BNSetParametersForAnalysis(BNBinaryView* view, BNAnalysisParameters params); BINARYNINJACOREAPI uint64_t BNGetMaxFunctionSizeForAnalysis(BNBinaryView* view); BINARYNINJACOREAPI void BNSetMaxFunctionSizeForAnalysis(BNBinaryView* view, uint64_t size); + BINARYNINJACOREAPI bool BNGetNewAutoFunctionAnalysisSuppressed(BNBinaryView* view); + BINARYNINJACOREAPI void BNSetNewAutoFunctionAnalysisSuppressed(BNBinaryView* view, bool suppress); BINARYNINJACOREAPI BNAnalysisCompletionEvent* BNAddAnalysisCompletionEvent(BNBinaryView* view, void* ctxt, void (*callback)(void* ctxt)); diff --git a/binaryview.cpp b/binaryview.cpp index bebfb801..848aae95 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -2008,6 +2008,18 @@ void BinaryView::SetMaxFunctionSizeForAnalysis(uint64_t size) } +bool BinaryView::GetNewAutoFunctionAnalysisSuppressed() +{ + return BNGetNewAutoFunctionAnalysisSuppressed(m_object); +} + + +void BinaryView::SetNewAutoFunctionAnalysisSuppressed(bool suppress) +{ + BNSetNewAutoFunctionAnalysisSuppressed(m_object, suppress); +} + + BinaryData::BinaryData(FileMetadata* file): BinaryView(BNCreateBinaryDataView(file->GetObject())) { } diff --git a/python/binaryview.py b/python/binaryview.py index 25953b34..35ef6a40 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -1098,6 +1098,15 @@ class BinaryView(object): def max_function_size_for_analysis(self, size): core.BNSetMaxFunctionSizeForAnalysis(self.handle, size) + @property + def new_auto_function_analysis_suppressed(self): + """Whether or not automatically discovered functions will be analyzed""" + return core.BNGetNewAutoFunctionAnalysisSuppressed(self.handle) + + @new_auto_function_analysis_suppressed.setter + def new_auto_function_analysis_suppressed(self, suppress): + core.BNSetNewAutoFunctionAnalysisSuppressed(self.handle, suppress) + def __len__(self): return int(core.BNGetViewLength(self.handle)) -- cgit v1.3.1