From 76215b86ff629da58aa94d4cf4093d2e67017412 Mon Sep 17 00:00:00 2001 From: kat Date: Fri, 20 Jun 2025 16:17:01 -0400 Subject: Move workflow_objc to API repo, remove CFString & relptr renderers --- plugins/workflow_objc/Workflow.h | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 plugins/workflow_objc/Workflow.h (limited to 'plugins/workflow_objc/Workflow.h') diff --git a/plugins/workflow_objc/Workflow.h b/plugins/workflow_objc/Workflow.h new file mode 100644 index 00000000..4479a8a7 --- /dev/null +++ b/plugins/workflow_objc/Workflow.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2022-2023 Jon Palmisciano. All rights reserved. + * + * Use of this source code is governed by the BSD 3-Clause license; the full + * terms of the license can be found in the LICENSE.txt file. + */ + +#pragma once + +#include "BinaryNinja.h" + +/** + * Namespace to hold activity ID constants. + */ +namespace ActivityID { + +constexpr auto ResolveMethodCalls = "core.function.objectiveC.resolveMethodCalls"; + +} + +/** + * Workflow-related procedures. + */ +class Workflow { + + /** + * Attempt to rewrite the `objc_msgSend` call at `insnIndex` with a direct + * call to the requested method's implementation. + * + * @param insnIndex The index of the `LLIL_CALL` instruction to rewrite + */ + static bool rewriteMethodCall(LLILFunctionRef, size_t insnIndex); + +public: + /** + * Attempt to inline all `objc_msgSend` calls in the given analysis context. + */ + static void inlineMethodCalls(AnalysisContextRef); + + /** + * Register the Objective Ninja workflow and all activities. + * + * This is named a bit strangely because `register` is a keyword in C++ and + * therefore an invalid method name, and I refuse to misspell it to appease + * the compiler and avoid the conflict. + */ + static void registerActivities(); +}; -- cgit v1.3.1