diff options
| author | Brian Potchik <brian@vector35.com> | 2024-10-24 12:06:09 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2024-10-24 12:06:09 -0400 |
| commit | 6d7f4ac49f5db820c5c468b69efc953cab87307b (patch) | |
| tree | 40339728c6b44eedebe92dd08a0ea797134ae69f /binaryninjaapi.h | |
| parent | 45955fccf9d0a5e512b3a4da6ac91bf0057ae58c (diff) | |
Initial implementation of the module-level analysis workflow.
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index bcaf644e..e67a836e 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -6419,7 +6419,7 @@ namespace BinaryNinja { void Reanalyze(); - Ref<Workflow> GetWorkflow() const; + Ref<Workflow> GetWorkflow(); /*! Displays contents to the user in the UI or on the command-line @@ -9914,6 +9914,20 @@ namespace BinaryNinja { std::string GetName() const; }; + class WorkflowMachine + { + Ref<BinaryView> m_view; + Ref<Function> m_function; + + public: + WorkflowMachine(Ref<BinaryView> view); + WorkflowMachine(Ref<Function> function); + + std::optional<bool> QueryOverride(const std::string& activity); + bool SetOverride(const std::string& activity, bool enable); + bool ClearOverride(const std::string& activity); + }; + /*! A Binary Ninja Workflow is an abstraction of a computational binary analysis pipeline and it provides the extensibility mechanism needed for tailored binary analysis and decompilation. More specifically, a Workflow is a repository of activities along with a unique strategy to execute them. Binary Ninja provides two Workflows named ``core.module.defaultAnalysis`` and ``core.function.defaultAnalysis`` @@ -9927,9 +9941,13 @@ namespace BinaryNinja { */ class Workflow : public CoreRefCountObject<BNWorkflow, BNNewWorkflowReference, BNFreeWorkflow> { + std::unique_ptr<WorkflowMachine> m_machine; + public: Workflow(const std::string& name = ""); Workflow(BNWorkflow* workflow); + Workflow(BNWorkflow* workflow, Ref<BinaryView> view); + Workflow(BNWorkflow* workflow, Ref<Function> function); virtual ~Workflow() {} /*! Get a list of all workflows @@ -10095,6 +10113,8 @@ namespace BinaryNinja { void ShowReport(const std::string& name); std::vector<std::string> GetEligibilitySettings(); + + WorkflowMachine* GetWorkflowMachine() const { return m_machine.get(); } }; class DisassemblySettings : @@ -11012,7 +11032,7 @@ namespace BinaryNinja { void MarkUpdatesRequired(BNFunctionUpdateType type = UserFunctionUpdate); void MarkCallerUpdatesRequired(BNFunctionUpdateType type = UserFunctionUpdate); - Ref<Workflow> GetWorkflow() const; + Ref<Workflow> GetWorkflow(); void RequestAdvancedAnalysisData(); void ReleaseAdvancedAnalysisData(); |
