diff options
| author | kat <kat@vector35.com> | 2025-06-20 16:17:01 -0400 |
|---|---|---|
| committer | kat <kat@vector35.com> | 2025-06-23 10:40:55 -0400 |
| commit | 76215b86ff629da58aa94d4cf4093d2e67017412 (patch) | |
| tree | 06af88506096351e99053ab5ed9901ff892801f3 /plugins/workflow_objc/Workflow.h | |
| parent | 17b2cb59846073fdbc08235555fd68cdb6852c42 (diff) | |
Move workflow_objc to API repo, remove CFString & relptr renderers
Diffstat (limited to 'plugins/workflow_objc/Workflow.h')
| -rw-r--r-- | plugins/workflow_objc/Workflow.h | 48 |
1 files changed, 48 insertions, 0 deletions
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(); +}; |
