diff options
| author | Brandon Miller <brandon@vector35.com> | 2025-04-25 13:30:45 -0400 |
|---|---|---|
| committer | Ryan Snyder <ryan@vector35.com> | 2025-06-23 13:44:12 -0400 |
| commit | b079d1a1e19151f5c39de84c2e1e6cc6a91abc74 (patch) | |
| tree | 8cf27224630b690fcfdfd490ee43ec1cd56fc9b6 /defaultabb | |
| parent | 76215b86ff629da58aa94d4cf4093d2e67017412 (diff) | |
Perform BB analysis from Architecture C++ API
This commit moves AnalyzeBasicBlocks from the binary ninja core to the
API and allows architecture plugins to optionally override
AnalyzeBasicBlocks for a custom implementation
Supply ABB inputs in BNBasicBlockAnalysisContext
Register default analyze basic blocks callback
This allows the nanomips and rust core architecture plugins to work
again while using the C++ API DefaultAnalyzeBasicBlocks
Use default ABB from Python plugins
Fix bug in API ArchAndAddr operator overload
Python APIs for basic block analysis
Diffstat (limited to 'defaultabb')
| -rw-r--r-- | defaultabb/CMakeLists.txt | 50 | ||||
| -rw-r--r-- | defaultabb/plugin.cpp | 12 |
2 files changed, 62 insertions, 0 deletions
diff --git a/defaultabb/CMakeLists.txt b/defaultabb/CMakeLists.txt new file mode 100644 index 00000000..1594ec8a --- /dev/null +++ b/defaultabb/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.13 FATAL_ERROR) + +project(defaultabb) + +if(NOT BN_INTERNAL_BUILD) + add_subdirectory(${PROJECT_SOURCE_DIR}/../.. ${PROJECT_BINARY_DIR}/api) +endif() + +file(GLOB SOURCES + *.cpp + *.h) + +if(DEMO) + add_library(defaultabb STATIC ${SOURCES}) +else() + add_library(defaultabb SHARED ${SOURCES}) +endif() + +target_include_directories(defaultabb + PRIVATE ${PROJECT_SOURCE_DIR} +) + +if(WIN32) + target_link_directories(defaultabb + PRIVATE ${BN_INSTALL_DIR}) + target_link_libraries(defaultabb binaryninjaapi) +else() + target_link_libraries(defaultabb binaryninjaapi) +endif() + +if(UNIX AND NOT APPLE) + target_link_options(defaultabb PRIVATE "LINKER:--exclude-libs,ALL") +endif() + +set_target_properties(defaultabb PROPERTIES + CXX_STANDARD 17 + CXX_VISIBILITY_PRESET hidden + CXX_STANDARD_REQUIRED ON + C_STANDARD 99 + C_STANDARD_REQUIRED ON + C_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN ON + POSITION_INDEPENDENT_CODE ON) + +if(BN_INTERNAL_BUILD) + plugin_rpath(defaultabb) + set_target_properties(defaultabb PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR} + RUNTIME_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR}) +endif() diff --git a/defaultabb/plugin.cpp b/defaultabb/plugin.cpp new file mode 100644 index 00000000..917a03ee --- /dev/null +++ b/defaultabb/plugin.cpp @@ -0,0 +1,12 @@ +#include "binaryninjaapi.h" +#include "binaryninjacore.h" + +using namespace BinaryNinja; + +extern "C" { + BN_DECLARE_CORE_ABI_VERSION + BINARYNINJAPLUGIN bool CorePluginInit() + { + return BNArchitectureSetDefaultAnalyzeBasicBlocksCallback((void *)Architecture::DefaultAnalyzeBasicBlocksCallback); + } +} |
