diff --git a/CMakeLists.txt b/CMakeLists.txt index 453db44..ed0948a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ project( LANGUAGES CXX ) +set(CMAKE_CXX_STANDARD 17) + if(NOT CMAKE_SYSTEM_NAME MATCHES Windows) message(FATAL_ERROR "Use a cross compilation suitable toolchain with CMAKE_SYSTEM_NAME set to Windows") endif() @@ -34,17 +36,23 @@ else() set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO /OPT:REF /OPT:ICF /PDBSTRIPPED") endif() +# *) Shared modules +add_library(shared STATIC shared/crypto.cpp shared/crypto.hpp shared/futils.cpp shared/futils.hpp) + # *) Reflective loader (DLL) add_library(loader SHARED reflective_loader/loader.cpp reflective_loader/loader.hpp) +target_link_libraries(loader PRIVATE shared) # *) Payload (DLL) add_library(payload SHARED payload/payload.cpp) # *) Shellcode generator (EXE) add_executable(generator generator/generator.cpp generator/generator.hpp) +target_link_libraries(generator PRIVATE shared) # *) Injector (EXE) add_executable(injector injector/injector.cpp) +target_link_libraries(injector PRIVATE shared) if(NOT MSVC) foreach(target loader payload generator injector) diff --git a/payload/payload.cpp b/payload/payload.cpp index 2cca76f..e09df39 100644 --- a/payload/payload.cpp +++ b/payload/payload.cpp @@ -1,3 +1,5 @@ +#pragma GCC diagnostic ignored "-Wunused-parameter" + #include #ifdef BUILD_DLL diff --git a/reflective_loader/loader.hpp b/reflective_loader/loader.hpp index c7191d0..01debff 100644 --- a/reflective_loader/loader.hpp +++ b/reflective_loader/loader.hpp @@ -3,6 +3,7 @@ #include #include #include +#include constexpr auto MAX_IMPORT_DELAY_MS = 6 * 1000; constexpr auto OBFUSCATE_IMPORTS = 1; diff --git a/shared/crypto.cpp b/shared/crypto.cpp index 8ca698b..0d15d49 100644 --- a/shared/crypto.cpp +++ b/shared/crypto.cpp @@ -17,7 +17,7 @@ std::vector GenerateKey(size_t keysize) void XorCipher(std::vector &data, const std::vector &key) { - for (auto i = 0; i < data.size(); i++) + for (size_t i = 0; i < data.size(); i++) { data[i] = data[i] ^ key[i % key.size()]; }