Developer knowledge network · moderated exchange

Społeczność UnreliableCode

Badania programistów, inżynieria wsteczna i społeczność programistów

Knowledge indexNa żywo
4Categories
919Threads
2.8KPosty
Release

C++20 consteval Compile-Time String Encryption Macro with XOR Permutation [v2.4 Technical Discussion]

vtable_slayer
Senior Reverser
MEMBER
Rozpustnik: 215
Data dołączenia: Mar 2018
Posty: 86
Dzięki: 61
2 tygodnie temu · Aug 5, 2026 9:39 AM
#1

Zero-dependency compile-time string encryption using C++20 consteval:

CPP
template<size_t N, uint8_t Key>
struct EncryptedString {
    uint8_t data[N];
    consteval EncryptedString(const char(&str)[N]) {
        for (size_t i = 0; i < N; ++i) data[i] = str[i] ^ (Key + (uint8_t)i);
    }
    std::string Decrypt() const {
        std::string s(N - 1, '\0');
        for (size_t i = 0; i < N - 1; ++i) s[i] = data[i] ^ (Key + (uint8_t)i);
        return s;
    }
};
#define _XOR(str) []() -> std::string { static constexpr auto enc = EncryptedString<sizeof(str), 0x7A>(str); return enc.Decrypt(); }()

All strings are scrambled in the compiled .rdata section and only decrypted on stack during execution!

sig_scanner_sam
Pattern Master
MEMBER
Rozpustnik: 210
Data dołączenia: Dec 2019
Posty: 11
Dzięki: 51
2 tygodnie temu · Aug 5, 2026 2:04 PM
#2

Replaced skCrypt with this. Clean C++20 standard compliance with zero compiler warnings.

hook_doctor
Hooking Specialist
MEMBER
Rozpustnik: 181
Data dołączenia: Jul 2019
Posty: 21
Dzięki: 50
2 tygodnie temu · Aug 5, 2026 10:35 PM
#3

Clean compile-time macro.