Обфускация Времени Компиляции С Использованием Nand/Nor



Введение.

Любой, кто знаком с современным C++, слышал, что начиная с C++11 в стандарт был введен спецификатор constexpr, с помощью которого можно выполнять ограниченные вычисления во время компиляции.

Последующие стандарты были добавлены если constexpr И constexpr лямбды которые в некоторой степени снимают ограничения и помогают писать код с расчетами времени компиляции.

Сегодня мы поговорим о генерации случайного кода во время компиляции.



Выбор базы для получения «случайных» значений времени компиляции

Чтобы выбрать конкретный путь для кода во время компиляции, вам нужен constexpr ГПСЧ с хорошими выходными данными, для этого я выбрал генератор xorshift , Кстати xorshift проходит эмпирические тесты BigCrush (ТестU01) .

xorshift256++

   

#include <stdint.h> /* This is xoshiro256++ 1.0, one of our all-purpose, rock-solid generators. It has excellent (sub-ns) speed, a state (256 bits) that is large enough for any parallel application, and it passes all tests we are aware of. For generating just floating-point numbers, xoshiro256+ is even faster. The state must be seeded so that it is not everywhere zero. If you have a 64-bit seed, we suggest to seed a splitmix64 generator and use its output to fill s. */ static inline uint64_t rotl(const uint64_t x, int k) {

Теги: #C++ #Ассемблер #вычисления во время компиляции
Вместе с данным постом часто просматривают: