cmake_minimum_required(VERSION 3.20) project(JanusLoader CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # ── VM + Loader library ─────────────────────────────────────────────────────── add_library(janus_vm STATIC src/vm/core.cpp src/vm/alu.cpp src/vm/mem.cpp src/vm/branch.cpp src/vm/system.cpp src/syscall/winapi.cpp src/syscall/table.cpp src/loader/crypto.cpp src/loader/loader.cpp src/loader/payload_blob.cpp ) target_include_directories(janus_vm PUBLIC include) if (MSVC) target_compile_options(janus_vm PRIVATE /O2 /GS- /W4) target_compile_definitions(janus_vm PRIVATE _CRT_SECURE_NO_WARNINGS) else() target_compile_options(janus_vm PRIVATE -O2 -Wall -Wextra) endif() # ── Loader executable ───────────────────────────────────────────────────────── add_executable(JanusLoader src/main.cpp) target_link_libraries(JanusLoader PRIVATE janus_vm) if (WIN32) target_link_libraries(JanusLoader PRIVATE kernel32) endif() # ── Build payload separately ────────────────────────────────────────────────── # cd payload && cmake -B build -DCMAKE_TOOLCHAIN_FILE=../cmake/riscv64.cmake && cmake --build build