summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binaryninjaapi.h2
-rw-r--r--binaryninjacore.h16
-rw-r--r--python/workflow.py18
-rw-r--r--workflow.cpp15
4 files changed, 42 insertions, 9 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 40c71396..1ec2c22a 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -9943,6 +9943,8 @@ namespace BinaryNinja {
*/
Ref<FlowGraph> GetGraph(const std::string& activity = "", bool sequential = false);
void ShowReport(const std::string& name);
+
+ std::vector<std::string> GetEligibilitySettings();
};
class DisassemblySettings :
diff --git a/binaryninjacore.h b/binaryninjacore.h
index cb5835c3..e3c34d2c 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -37,7 +37,7 @@
// Current ABI version for linking to the core. This is incremented any time
// there are changes to the API that affect linking, including new functions,
// new types, or modifications to existing functions or types.
-#define BN_CURRENT_CORE_ABI_VERSION 75
+#define BN_CURRENT_CORE_ABI_VERSION 76
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
@@ -5188,21 +5188,19 @@ extern "C"
BINARYNINJACOREAPI size_t BNWorkflowSize(BNWorkflow* workflow);
BINARYNINJACOREAPI BNActivity* BNWorkflowGetActivity(BNWorkflow* workflow, const char* activity);
- BINARYNINJACOREAPI const char** BNWorkflowGetActivityRoots(
- BNWorkflow* workflow, const char* activity, size_t* inoutSize);
- BINARYNINJACOREAPI const char** BNWorkflowGetSubactivities(
- BNWorkflow* workflow, const char* activity, bool immediate, size_t* inoutSize);
- BINARYNINJACOREAPI bool BNWorkflowAssignSubactivities(
- BNWorkflow* workflow, const char* activity, const char** activities, size_t size);
+ BINARYNINJACOREAPI const char** BNWorkflowGetActivityRoots(BNWorkflow* workflow, const char* activity, size_t* inoutSize);
+ BINARYNINJACOREAPI const char** BNWorkflowGetSubactivities(BNWorkflow* workflow, const char* activity, bool immediate, size_t* inoutSize);
+ BINARYNINJACOREAPI bool BNWorkflowAssignSubactivities(BNWorkflow* workflow, const char* activity, const char** activities, size_t size);
BINARYNINJACOREAPI bool BNWorkflowClear(BNWorkflow* workflow);
- BINARYNINJACOREAPI bool BNWorkflowInsert(
- BNWorkflow* workflow, const char* activity, const char** activities, size_t size);
+ BINARYNINJACOREAPI bool BNWorkflowInsert(BNWorkflow* workflow, const char* activity, const char** activities, size_t size);
BINARYNINJACOREAPI bool BNWorkflowRemove(BNWorkflow* workflow, const char* activity);
BINARYNINJACOREAPI bool BNWorkflowReplace(BNWorkflow* workflow, const char* activity, const char* newActivity);
BINARYNINJACOREAPI BNFlowGraph* BNWorkflowGetGraph(BNWorkflow* workflow, const char* activity, bool sequential);
BINARYNINJACOREAPI void BNWorkflowShowReport(BNWorkflow* workflow, const char* name);
+ BINARYNINJACOREAPI const char** BNWorkflowGetEligibilitySettings(BNWorkflow* workflow, size_t* inoutSize);
+
// Disassembly settings
BINARYNINJACOREAPI BNDisassemblySettings* BNCreateDisassemblySettings(void);
BINARYNINJACOREAPI BNDisassemblySettings* BNNewDisassemblySettingsReference(BNDisassemblySettings* settings);
diff --git a/python/workflow.py b/python/workflow.py
index 925c2bf0..77227933 100644
--- a/python/workflow.py
+++ b/python/workflow.py
@@ -522,6 +522,24 @@ class Workflow(metaclass=_WorkflowMetaclass):
"""
core.BNWorkflowShowReport(self.handle, "trace")
+ def eligibility_settings(self) -> List[str]:
+ """
+ ``eligibility_settings`` Retrieve the list of eligibility settings for the Workflow.
+
+ :return: list of eligibility settings
+ :rtype: list[str]
+ """
+ length = ctypes.c_ulonglong()
+ result = core.BNWorkflowGetEligibilitySettings(self.handle, ctypes.byref(length))
+ assert result is not None, "core.BNWorkflowGetEligibilitySettings returned None"
+ out_list = []
+ try:
+ for i in range(length.value):
+ out_list.append(result[i].decode('utf-8'))
+ return out_list
+ finally:
+ core.BNFreeStringList(result, length.value)
+
@property
def machine(self):
if self._machine is not None:
diff --git a/workflow.cpp b/workflow.cpp
index 3dd771a4..0d02ab5b 100644
--- a/workflow.cpp
+++ b/workflow.cpp
@@ -325,3 +325,18 @@ void Workflow::ShowReport(const string& name)
{
BNWorkflowShowReport(m_object, name.c_str());
}
+
+
+vector<string> Workflow::GetEligibilitySettings()
+{
+ size_t size = 0;
+ char** outBuffer = (char**)BNWorkflowGetEligibilitySettings(m_object, &size);
+
+ vector<string> result;
+ result.reserve(size);
+ for (size_t i = 0; i < size; i++)
+ result.emplace_back(outBuffer[i]);
+
+ BNFreeStringList(outBuffer, size);
+ return result;
+}