diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | CMakeLists.txt | 82 | ||||
| -rw-r--r-- | examples/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | examples/bin-info/CMakeLists.txt | 18 | ||||
| -rw-r--r-- | examples/bin-info/src/bin-info.cpp | 30 | ||||
| -rw-r--r-- | examples/breakpoint/CMakeLists.txt | 40 | ||||
| -rw-r--r-- | examples/cmdline_disasm/CMakeLists.txt | 13 | ||||
| -rw-r--r-- | examples/llil_parser/CMakeLists.txt | 58 | ||||
| -rw-r--r-- | examples/llil_parser/src/llil_parser.cpp | 4 | ||||
| -rw-r--r-- | examples/mlil_parser/CMakeLists.txt | 58 | ||||
| -rw-r--r-- | examples/mlil_parser/src/mlil_parser.cpp | 4 | ||||
| -rw-r--r-- | examples/print_syscalls/CMakeLists.txt | 18 | ||||
| -rw-r--r-- | examples/print_syscalls/src/arm-syscall.cpp | 30 | ||||
| -rw-r--r-- | examples/x86_extension/CMakeLists.txt | 17 |
14 files changed, 215 insertions, 165 deletions
@@ -33,6 +33,7 @@ CTestTestfile.cmake api-docs/source/python.rst api-docs/source/index.rst .coverage +build # Make generator plugins/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 85009adc..b42b9d01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,16 +1,82 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.4 FATAL_ERROR) project(binaryninja-api) -file( GLOB SRCS *.cpp json/json.h json/jsoncpp.cpp json/json-forwards.h) +option(BINJA_BUILD_EXAMPLES "Builds example plugins" OFF) -add_library(binaryninjaapi STATIC ${SRCS}) +if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + if (MSVC) + message(FATAL_ERROR "Binary Ninja is 64-bit only (try -G \"${CMAKE_GENERATOR} Win64\")") + else() + message(FATAL_ERROR "Binary Ninja is 64-bit only") + endif() +endif() -set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) +if(WIN32) + set(BINJA_DIR "C:\\Program Files\\Vector35\\BinaryNinja" + CACHE PATH "Binary Ninja installation directory") + set(BINJA_BIN_DIR "${BINJA_DIR}" + CACHE PATH "Binary Ninja binary directory") + 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" + CACHE PATH "Binary Ninja binary directory") + 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}" + CACHE PATH "Binary Ninja binary directory") + set(BINJA_PLUGINS_DIR "$ENV{HOME}/.binaryninja/plugins" + CACHE PATH "Binary Ninja user plugins directory") +endif() -include_directories(${PROJECT_SOURCE_DIR}) +if(NOT BINJA_CORE_LIBRARY) + find_library(BINJA_CORE_LIBRARY + NAMES binaryninjacore libbinaryninjacore.so.1 + PATHS ${BINJA_BIN_DIR}) + + if(BINJA_CORE_LIBRARY) + message(STATUS "Binary Ninja Core: ${BINJA_CORE_LIBRARY}") + else() + message(FATAL_ERROR "Binary Ninja Core Not Found") + endif() +endif() + +file(GLOB BINJA_SOURCES *.cpp *.h json/json.h json/jsoncpp.cpp json/json-forwards.h) + +add_library(binaryninjaapi STATIC ${BINJA_SOURCES}) + +target_include_directories(binaryninjaapi + PUBLIC ${PROJECT_SOURCE_DIR}) + +target_link_libraries(binaryninjaapi + ${BINJA_CORE_LIBRARY}) set_target_properties(binaryninjaapi PROPERTIES - CXX_STANDARD 11 - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin - ) + CXX_STANDARD 11 + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN ON + POSITION_INDEPENDENT_CODE ON + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) + +function(binja_install_plugin target) + if(WIN32) + install(TARGETS ${target} RUNTIME + DESTINATION ${BINJA_PLUGINS_DIR}) + + install(FILES $<TARGET_PDB_FILE:${target}> + DESTINATION ${BINJA_PLUGINS_DIR} OPTIONAL) + else() + install(TARGETS ${target} LIBRARY + DESTINATION ${BINJA_PLUGINS_DIR}) + endif() +endfunction() + +if(BINJA_BUILD_EXAMPLES) + add_subdirectory(examples) +endif() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 00000000..10ff05da --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,7 @@ +add_subdirectory(bin-info) +add_subdirectory(breakpoint) +add_subdirectory(cmdline_disasm) +add_subdirectory(llil_parser) +add_subdirectory(mlil_parser) +add_subdirectory(print_syscalls) +add_subdirectory(x86_extension) diff --git a/examples/bin-info/CMakeLists.txt b/examples/bin-info/CMakeLists.txt new file mode 100644 index 00000000..498a5793 --- /dev/null +++ b/examples/bin-info/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) + +project(bin-info CXX) + +add_executable(${PROJECT_NAME} + src/bin-info.cpp) + +target_link_libraries(${PROJECT_NAME} + binaryninjaapi) + +if (NOT WIN32) + target_link_libraries(${PROJECT_NAME} + dl) +endif() + +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) diff --git a/examples/bin-info/src/bin-info.cpp b/examples/bin-info/src/bin-info.cpp index 2a9a5e98..b6a9ae79 100644 --- a/examples/bin-info/src/bin-info.cpp +++ b/examples/bin-info/src/bin-info.cpp @@ -10,11 +10,12 @@ #include "binaryninjacore.h" #include "binaryninjaapi.h" +#include "lowlevelilinstruction.h" using namespace BinaryNinja; using namespace std; -#ifndef __WIN32__ +#ifndef _WIN32 #include <libgen.h> #include <dlfcn.h> string get_plugins_directory() @@ -30,7 +31,7 @@ string get_plugins_directory() #else string get_plugins_directory() { - return "C:\\Program Files\\Vector35\\Binary Ninja\\plugins\\"; + return "C:\\Program Files\\Vector35\\BinaryNinja\\plugins\\"; } #endif @@ -56,7 +57,7 @@ int main(int argc, char *argv[]) exit(-1); } - /* In order to initiate the bundled plugins properly, the location + /* In order to initiate the bundled plugins properly, the location * of where bundled plugins directory is must be set. Since * libbinaryninjacore is in the path get the path to it and use it to * determine the plugins directory */ @@ -64,23 +65,24 @@ int main(int argc, char *argv[]) InitCorePlugins(); InitUserPlugins(); - auto bd = BinaryData(new FileMetadata(), fname); - BinaryView *bv; - - for (auto type : BinaryViewType::GetViewTypes()) { - if (type->IsTypeValidForData(&bd) && type->GetName() != "Raw") { - bv = type->Create(&bd); + Ref<BinaryData> bd = new BinaryData(new FileMetadata(), argv[1]); + Ref<BinaryView> bv; + for (auto type : BinaryViewType::GetViewTypes()) + { + if (type->IsTypeValidForData(bd) && type->GetName() != "Raw") + { + bv = type->Create(bd); break; } } - if (bv->GetTypeName() == "Raw"){ - cerr << "Error: Unable to get any other view type besides Raw"; - exit(-1); + if (!bv || bv->GetTypeName() == "Raw") + { + fprintf(stderr, "Input file does not appear to be an exectuable\n"); + return -1; } - bv->UpdateAnalysis(); - while (bv->GetAnalysisProgress().state != IdleState); + bv->UpdateAnalysisAndWait(); cout << "Target: " << fname << endl << endl; cout << "TYPE: " << bv->GetTypeName() << endl; diff --git a/examples/breakpoint/CMakeLists.txt b/examples/breakpoint/CMakeLists.txt index 916778c8..70de8884 100644 --- a/examples/breakpoint/CMakeLists.txt +++ b/examples/breakpoint/CMakeLists.txt @@ -3,43 +3,13 @@ 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}) + src/breakpoint.cpp) target_link_libraries(${PROJECT_NAME} - ${BINJA_API_LIBRARY} - ${BINJA_CORE_LIBRARY} - ) + binaryninjaapi) set_target_properties(${PROJECT_NAME} PROPERTIES - CXX_STANDARD 11 - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin - ) + CXX_STANDARD 11 + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) -install(TARGETS ${PROJECT_NAME} DESTINATION ${BINJA_PLUGINS_DIR}) +binja_install_plugin(${PROJECT_NAME}) diff --git a/examples/cmdline_disasm/CMakeLists.txt b/examples/cmdline_disasm/CMakeLists.txt new file mode 100644 index 00000000..98e5f535 --- /dev/null +++ b/examples/cmdline_disasm/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) + +project(cmdline_disasm CXX) + +add_executable(${PROJECT_NAME} + src/disasm.cpp) + +target_link_libraries(${PROJECT_NAME} + binaryninjaapi) + +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) diff --git a/examples/llil_parser/CMakeLists.txt b/examples/llil_parser/CMakeLists.txt index 868a755e..dd850fc5 100644 --- a/examples/llil_parser/CMakeLists.txt +++ b/examples/llil_parser/CMakeLists.txt @@ -1,50 +1,18 @@ -# Mostly copied from https://github.com/Vector35/binaryninja-api/blob/dev/examples/breakpoint/CMakeLists.txt +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +project(llil_parser CXX) -project(LLIL_Parser) +add_executable(${PROJECT_NAME} + src/llil_parser.cpp) -#----------------------------------------------------------------------------- -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..) -#----------------------------------------------------------------------------- -set(SRCS src/llil_parser.cpp) -#----------------------------------------------------------------------------- -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -#----------------------------------------------------------------------------- -if(WIN32) - set(BINJA_DIR "C:\\Program Files\\Vector35\\BinaryNinja" - 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() -#----------------------------------------------------------------------------- -add_executable (${PROJECT_NAME} ${SRCS}) -#----------------------------------------------------------------------------- -find_library(BINJA_API_LIBRARY binaryninjaapi - HINTS ${CMAKE_CURRENT_SOURCE_DIR}/../../bin ${CMAKE_CURRENT_SOURCE_DIR}/../../bin/Release ${CMAKE_CURRENT_SOURCE_DIR}/../../bin/Debug) -find_library(BINJA_CORE_LIBRARY binaryninjacore - HINTS ${BINJA_BIN_DIR}) -#----------------------------------------------------------------------------- target_link_libraries(${PROJECT_NAME} - ${BINJA_API_LIBRARY} - ${BINJA_CORE_LIBRARY} - ) -#----------------------------------------------------------------------------- -install (TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION bin - LIBRARY DESTINATION Lib - ARCHIVE DESTINATION Lib) + binaryninjaapi) + +if (NOT WIN32) + target_link_libraries(${PROJECT_NAME} + dl) +endif() +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) diff --git a/examples/llil_parser/src/llil_parser.cpp b/examples/llil_parser/src/llil_parser.cpp index 982593a9..e23d32f6 100644 --- a/examples/llil_parser/src/llil_parser.cpp +++ b/examples/llil_parser/src/llil_parser.cpp @@ -8,7 +8,7 @@ using namespace BinaryNinja; using namespace std; -#ifndef __WIN32__ +#ifndef _WIN32 #include <libgen.h> #include <dlfcn.h> static string GetPluginsDirectory() @@ -24,7 +24,7 @@ static string GetPluginsDirectory() #else static string GetPluginsDirectory() { - return "C:\\Program Files\\Vector35\\Binary Ninja\\plugins\\"; + return "C:\\Program Files\\Vector35\\BinaryNinja\\plugins\\"; } #endif diff --git a/examples/mlil_parser/CMakeLists.txt b/examples/mlil_parser/CMakeLists.txt index 4ec35591..4f4f450b 100644 --- a/examples/mlil_parser/CMakeLists.txt +++ b/examples/mlil_parser/CMakeLists.txt @@ -1,50 +1,18 @@ -# Mostly copied from https://github.com/Vector35/binaryninja-api/blob/dev/examples/breakpoint/CMakeLists.txt +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +project(mlil_parser CXX) -project(MLIL_Parser) +add_executable(${PROJECT_NAME} + src/mlil_parser.cpp) -#----------------------------------------------------------------------------- -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..) -#----------------------------------------------------------------------------- -set(SRCS src/mlil_parser.cpp) -#----------------------------------------------------------------------------- -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -#----------------------------------------------------------------------------- -if(WIN32) - set(BINJA_DIR "C:\\Program Files\\Vector35\\BinaryNinja" - 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() -#----------------------------------------------------------------------------- -add_executable (${PROJECT_NAME} ${SRCS}) -#----------------------------------------------------------------------------- -find_library(BINJA_API_LIBRARY binaryninjaapi - HINTS ${CMAKE_CURRENT_SOURCE_DIR}/../../bin ${CMAKE_CURRENT_SOURCE_DIR}/../../bin/Release ${CMAKE_CURRENT_SOURCE_DIR}/../../bin/Debug) -find_library(BINJA_CORE_LIBRARY binaryninjacore - HINTS ${BINJA_BIN_DIR}) -#----------------------------------------------------------------------------- target_link_libraries(${PROJECT_NAME} - ${BINJA_API_LIBRARY} - ${BINJA_CORE_LIBRARY} - ) -#----------------------------------------------------------------------------- -install (TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION bin - LIBRARY DESTINATION Lib - ARCHIVE DESTINATION Lib) + binaryninjaapi) + +if (NOT WIN32) + target_link_libraries(${PROJECT_NAME} + dl) +endif() +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) diff --git a/examples/mlil_parser/src/mlil_parser.cpp b/examples/mlil_parser/src/mlil_parser.cpp index a9411251..d73df2bc 100644 --- a/examples/mlil_parser/src/mlil_parser.cpp +++ b/examples/mlil_parser/src/mlil_parser.cpp @@ -8,7 +8,7 @@ using namespace BinaryNinja; using namespace std; -#ifndef __WIN32__ +#ifndef _WIN32 #include <libgen.h> #include <dlfcn.h> static string GetPluginsDirectory() @@ -24,7 +24,7 @@ static string GetPluginsDirectory() #else static string GetPluginsDirectory() { - return "C:\\Program Files\\Vector35\\Binary Ninja\\plugins\\"; + return "C:\\Program Files\\Vector35\\BinaryNinja\\plugins\\"; } #endif diff --git a/examples/print_syscalls/CMakeLists.txt b/examples/print_syscalls/CMakeLists.txt new file mode 100644 index 00000000..d8495b3c --- /dev/null +++ b/examples/print_syscalls/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) + +project(print_syscalls CXX) + +add_executable(${PROJECT_NAME} + src/arm-syscall.cpp) + +target_link_libraries(${PROJECT_NAME} + binaryninjaapi) + +if (NOT WIN32) + target_link_libraries(${PROJECT_NAME} + dl) +endif() + +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) diff --git a/examples/print_syscalls/src/arm-syscall.cpp b/examples/print_syscalls/src/arm-syscall.cpp index 3424619b..2eb5e402 100644 --- a/examples/print_syscalls/src/arm-syscall.cpp +++ b/examples/print_syscalls/src/arm-syscall.cpp @@ -9,11 +9,12 @@ #include "binaryninjacore.h" #include "binaryninjaapi.h" +#include "lowlevelilinstruction.h" using namespace BinaryNinja; using namespace std; -#ifndef __WIN32__ +#ifndef _WIN32 #include <libgen.h> #include <dlfcn.h> string get_plugins_directory() @@ -29,7 +30,7 @@ string get_plugins_directory() #else string get_plugins_directory() { - return "C:\\Program Files\\Vector35\\Binary Ninja\\plugins\\"; + return "C:\\Program Files\\Vector35\\BinaryNinja\\plugins\\"; } #endif @@ -63,23 +64,24 @@ int main(int argc, char *argv[]) InitCorePlugins(); InitUserPlugins(); - auto bd = BinaryData(new FileMetadata(), fname); - BinaryView *bv = 0; - - for (auto type : BinaryViewType::GetViewTypesForData(&bd)) { - if (type->GetName() != "Raw") { - bv = type->Create(&bd); + Ref<BinaryData> bd = new BinaryData(new FileMetadata(), argv[1]); + Ref<BinaryView> bv; + for (auto type : BinaryViewType::GetViewTypes()) + { + if (type->IsTypeValidForData(bd) && type->GetName() != "Raw") + { + bv = type->Create(bd); break; } } - if (!bv || bv->GetTypeName() == "Raw"){ - cerr << "Error: Unable to get any other view type besides Raw"; - exit(-1); + if (!bv || bv->GetTypeName() == "Raw") + { + fprintf(stderr, "Input file does not appear to be an exectuable\n"); + return -1; } - bv->UpdateAnalysis(); - while (bv->GetAnalysisProgress().state != IdleState); + bv->UpdateAnalysisAndWait(); auto arch = bv->GetDefaultArchitecture(); auto platform = bv->GetDefaultPlatform(); @@ -100,7 +102,7 @@ int main(int argc, char *argv[]) auto instr = (*il_func)[il_func->GetIndexForInstruction(i)]; if (instr.operation == LLIL_SYSCALL) { - auto reg_value = func->GetRegisterValueAtLowLevelILInstruction(i, reg); + auto reg_value = il_func->GetRegisterValueAtInstruction(reg, i); cout << "System call address: 0x" << hex << instr.address diff --git a/examples/x86_extension/CMakeLists.txt b/examples/x86_extension/CMakeLists.txt new file mode 100644 index 00000000..632a9381 --- /dev/null +++ b/examples/x86_extension/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) + +project(x86_extension CXX) + +add_library(${PROJECT_NAME} SHARED + src/x86_extension.cpp + src/asmx86/asmx86.c + src/asmx86/asmx86.h) + +target_link_libraries(${PROJECT_NAME} + binaryninjaapi) + +set_target_properties(${PROJECT_NAME} PROPERTIES + CXX_STANDARD 11 + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) + +binja_install_plugin(${PROJECT_NAME}) |
