diff options
| author | Andrew Lamoureux <lwerdna@users.noreply.github.com> | 2017-03-15 20:35:37 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-15 20:35:37 -0400 |
| commit | c7c12a27abbd8a01d9425598ac7cd424dcfa50ce (patch) | |
| tree | 9347ba4e5e6a2b26baf620f59e56db7965bb47b5 /examples/breakpoint | |
| parent | 1f7523ce2b1edac1014d781fc771d5b82568e2f1 (diff) | |
| parent | 31d34d5d067ed4c5fe071eb8637b10ed50607555 (diff) | |
Merge pull request #573 from jhurliman/dev
CMake files for building binaryninja-api and example c++ plugin
Diffstat (limited to 'examples/breakpoint')
| -rw-r--r-- | examples/breakpoint/CMakeLists.txt | 45 | ||||
| -rw-r--r-- | examples/breakpoint/src/breakpoint.cpp | 36 |
2 files changed, 63 insertions, 18 deletions
diff --git a/examples/breakpoint/CMakeLists.txt b/examples/breakpoint/CMakeLists.txt new file mode 100644 index 00000000..916778c8 --- /dev/null +++ b/examples/breakpoint/CMakeLists.txt @@ -0,0 +1,45 @@ +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) + +project(breakpoint CXX) + +add_library(${PROJECT_NAME} SHARED + src/breakpoint.cpp) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..) + +if(WIN32) + set(BINJA_DIR "C:\\Program Files\\Vector35\\Binary Ninja" + CACHE PATH "Binary Ninja installation directory") + set(BINJA_BIN_DIR "${BINJA_DIR}") + set(BINJA_PLUGINS_DIR "$ENV{APPDATA}/Binary Ninja/plugins" + CACHE PATH "Binary Ninja user plugins directory") +elseif(APPLE) + set(BINJA_DIR "/Applications/Binary Ninja.app" + CACHE PATH "Binary Ninja installation directory") + set(BINJA_BIN_DIR "${BINJA_DIR}/Contents/MacOS") + set(BINJA_PLUGINS_DIR "$ENV{HOME}/Library/Application Support/Binary Ninja/plugins" + CACHE PATH "Binary Ninja user plugins directory") +else() + set(BINJA_DIR "$ENV{HOME}/binaryninja" + CACHE PATH "Binary Ninja installation directory") + set(BINJA_BIN_DIR "${BINJA_DIR}") + set(BINJA_PLUGINS_DIR "$ENV{HOME}/.binaryninja/plugins" + CACHE PATH "Binary Ninja user plugins directory") +endif() + +find_library(BINJA_API_LIBRARY binaryninjaapi + HINTS ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) +find_library(BINJA_CORE_LIBRARY binaryninjacore + HINTS ${BINJA_BIN_DIR}) + +target_link_libraries(${PROJECT_NAME} + ${BINJA_API_LIBRARY} + ${BINJA_CORE_LIBRARY} + ) + +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin + ) + +install(TARGETS ${PROJECT_NAME} DESTINATION ${BINJA_PLUGINS_DIR}) diff --git a/examples/breakpoint/src/breakpoint.cpp b/examples/breakpoint/src/breakpoint.cpp index 41476411..4fac98ac 100644 --- a/examples/breakpoint/src/breakpoint.cpp +++ b/examples/breakpoint/src/breakpoint.cpp @@ -6,31 +6,31 @@ using namespace std; void write_breakpoint(BinaryNinja::BinaryView *view, uint64_t start, uint64_t length) { - // Sample function to show registering a plugin menu item for a range of bytes. - // Also possible: - // register - // register_for_address - // register_for_function + // Sample function to show registering a plugin menu item for a range of bytes. + // Also possible: + // register + // register_for_address + // register_for_function - Ref<Architecture> arch = view->GetDefaultArchitecture(); - string arch_name = arch->GetName(); + Ref<Architecture> arch = view->GetDefaultArchitecture(); + string arch_name = arch->GetName(); - if (arch_name.compare(0, 3, "x86") == 0) { - string int3s = string(length, '\xcc'); - view->Write(start, int3s.c_str(), length); - } else { - LogError("No support for breakpoint on %s", arch_name.c_str()); - } + if (arch_name.compare(0, 3, "x86") == 0) { + string int3s = string(length, '\xcc'); + view->Write(start, int3s.c_str(), length); + } else { + LogError("No support for breakpoint on %s", arch_name.c_str()); + } } extern "C" { - BINARYNINJAPLUGIN bool CorePluginInit() - { + BINARYNINJAPLUGIN bool CorePluginInit() + { // Register the plugin with Binary Ninja PluginCommand::RegisterForRange("Convert to breakpoint", "Fill region with breakpoint instructions.", &write_breakpoint); - return true; - } -} + return true; + } +}
\ No newline at end of file |
