summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorBrick <6098371+0x1F9F1@users.noreply.github.com>2019-02-15 17:23:04 +0000
committerJordan <jordan@psifertex.com>2019-02-27 15:16:38 -0500
commit156ad4bb6d7c789c4f4a1c7daf635eb7d3a92400 (patch)
treee3f53c7d401e215a06c52582aad6ddfe5f3067d5 /examples
parent49f6de04c7106e6ab8ce31fac6299f372a665698 (diff)
Greatly improved CMake builds + Fixed tests compilation
Diffstat (limited to 'examples')
-rw-r--r--examples/CMakeLists.txt7
-rw-r--r--examples/bin-info/CMakeLists.txt18
-rw-r--r--examples/bin-info/src/bin-info.cpp30
-rw-r--r--examples/breakpoint/CMakeLists.txt40
-rw-r--r--examples/cmdline_disasm/CMakeLists.txt13
-rw-r--r--examples/llil_parser/CMakeLists.txt58
-rw-r--r--examples/llil_parser/src/llil_parser.cpp4
-rw-r--r--examples/mlil_parser/CMakeLists.txt58
-rw-r--r--examples/mlil_parser/src/mlil_parser.cpp4
-rw-r--r--examples/print_syscalls/CMakeLists.txt18
-rw-r--r--examples/print_syscalls/src/arm-syscall.cpp30
-rw-r--r--examples/x86_extension/CMakeLists.txt17
12 files changed, 140 insertions, 157 deletions
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})