airborne/CMakeLists.txt

54 lines
1.6 KiB
CMake
Raw Normal View History

2023-12-29 20:36:08 +01:00
cmake_minimum_required(VERSION 3.11)
2024-01-02 22:06:07 +01:00
project(
airborne
VERSION 0.1.0
DESCRIPTION "Reflective DLL injection demonstration"
LANGUAGES CXX
)
2023-12-29 20:36:08 +01:00
if(NOT CMAKE_SYSTEM_NAME MATCHES Windows)
message(FATAL_ERROR "Use a cross compilation suitable toolchain with CMAKE_SYSTEM_NAME set to Windows")
endif()
2024-01-04 19:00:24 +01:00
# Build as Release by default
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
include(CheckIPOSupported)
check_ipo_supported(RESULT lto_supported OUTPUT error)
# Enable LTO if supported
if(lto_supported)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
message(WARNING "LTO is not supported: ${error}")
endif()
2023-12-29 20:36:08 +01:00
if(NOT MSVC)
2024-01-04 19:00:24 +01:00
add_compile_options("-Wall" "-Wextra" "-Os")
set(CMAKE_EXE_LINKED_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s")
2023-12-29 20:36:08 +01:00
else()
2024-01-04 19:00:24 +01:00
add_compile_options("/W4" "/WX" "/O1" "/GL")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO /OPT:REF /OPT:ICF /PDBSTRIPPED")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO /OPT:REF /OPT:ICF /PDBSTRIPPED")
2023-12-29 20:36:08 +01:00
endif()
# *) Reflective loader (DLL)
2024-01-03 14:33:07 +01:00
add_library(loader SHARED reflective_loader/loader.cpp reflective_loader/loader.hpp)
2023-12-29 20:36:08 +01:00
# *) Payload (DLL)
2024-01-02 22:06:07 +01:00
add_library(payload SHARED payload/payload.cpp)
2023-12-29 20:36:08 +01:00
# *) Shellcode generator (EXE)
add_executable(generator generator/generator.cpp generator/generator.hpp)
2023-12-29 20:36:08 +01:00
# *) Injector (EXE)
2024-01-02 22:06:07 +01:00
add_executable(injector injector/injector.cpp)
2024-01-04 19:00:24 +01:00
if(NOT MSVC)
foreach(target loader payload generator injector)
add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_STRIP} $<TARGET_FILE:${target}>) # Strip binaries
endforeach()
endif()