diff --git a/.gitignore b/.gitignore index c6127b3..f7660a4 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ modules.order Module.symvers Mkfile.old dkms.conf + +# CMAke generated makefiles +build/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7553175 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "concord"] + path = concord + url = https://github.com/Cogmasters/concord diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..50912eb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.11) +project(airborne) + +include(FetchContent) + +if(NOT CMAKE_SYSTEM_NAME MATCHES Windows) + message(FATAL_ERROR "Use a cross compilation suitable toolchain with CMAKE_SYSTEM_NAME set to Windows") +endif() + +if(NOT MSVC) + add_compile_options("-Wall") +else() + # Level 4 warnings + add_compile_options("-W4") +endif() + +# Discord API wrapper dependency +FetchContent_Declare( + concord + GIT_REPOSITORY https://github.com/Cogmasters/concord + GIT_TAG 769bdb7 # v2.2.1 release +) +FetchContent_MakeAvailable(concord) + +# *) Reflective loader (DLL) +add_library(reflective_loader SHARED reflective_loader/loader.c reflective_loader/loader.h) + +# *) Payload (DLL) +add_library(payload SHARED payload/payload.c) + +# *) Injector (EXE) +add_executable(injector injector/injector.c) +target_link_libraries(injector PRIVATE concord) + +# *) Shellcode generator (EXE) +add_executable(shellcode_generator shellcode_generator/generator.c) +target_link_libraries(shellcode_generator PRIVATE concord) + +# Include directories +target_include_directories(injector PRIVATE concord) +target_include_directories(shellcode_generator PRIVATE concord) diff --git a/linux-mingw-w64-x86_64.cmake b/linux-mingw-w64-x86_64.cmake deleted file mode 100644 index a61457a..0000000 --- a/linux-mingw-w64-x86_64.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# Usage: -# *) Install cross-compiler: `sudo apt install mingw-w64` -# *) cmake -DCMAKE_TOOLCHAIN_FILE=macos-mingw-w64-x86_64.cmake -B build -S . -# *) make -C build - -set(CMAKE_SYSTEM_NAME Windows) -set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) - -# Cross-compilers to use for C and C++ -set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) -set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) - -# Target environment on the build host system (with Homebrew) -set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) - -# Search for programs in the build host directories (modifying default behavior of FIND_XXX()) -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static -Os") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -Os") diff --git a/macos-mingw-w64-x86_64.cmake b/macos-mingw-w64-x86_64.cmake deleted file mode 100644 index fdf10af..0000000 --- a/macos-mingw-w64-x86_64.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# Usage: -# *) Install cross-compiler: `brew install mingw-w64` -# *) cmake -DCMAKE_TOOLCHAIN_FILE=macos-mingw-w64-x86_64.cmake -B build -S . -# *) make -C build - -set(CMAKE_SYSTEM_NAME Windows) -set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) - -# Cross-compilers to use for C and C++ -set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) -set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) - -# Target environment on the build host system (with Homebrew) -set(CMAKE_FIND_ROOT_PATH /opt/homebrew/Cellar/mingw-w64/11.0.1/toolchain-x86_64/${TOOLCHAIN_PREFIX}) - -# Search for programs in the build host directories (modifying default behavior of FIND_XXX()) -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static -Os") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -Os")