Общее назначение проекта:
интеграция с существующим C++ кодом, отслеживание подозрительных ситуаций, возникающих в ходе исследования и перемешивание кода, основанное на подмене ссылок (зависимостей)
Для повышения защищенности от нелегиимного воспроизведения единственной адекватной защитой будет защита, основанная на сложности анализа злоумышленником всего кода и использовании неявностей в способе защите (перемешивание кода).
Перемешивание кода - это необязательная составляющая, но предпочтительная - только перемешивая код можно его эффективно защитить. Без перемешивания будет реализована только базовая функицональность защиты - активное препятствование динамическому исследованию.
Добиться того, чтобы злоумышленник пришел к такому выводу, нужно: 1. сделать крайне затруднительным статический анализ 2. тесно интегрировать модуль безопасности с основным кодом, чтобы грани двух проектов были размыты 3. сократить количество линейных причинно-следственных связей в коде
Достижение целей: 1. реализовать механизм низкоуровневого "внедрения зависимостей" поддпрограмм 2. Inline + define (препроцессинг исходного кода) 3. многопоточность + низкоуровневое внедрение зависимостей
Должно быть 3 модуля: 1. запрещающий явное присоединение отладчика 2. эксплуатирующий технические особенности средств отладки, не известный широкому кругу исследователей - затирание причинно-следственной связи 3. сканирующий память процесса
Общая задача проекта: 1. сделать невозможным статический анализ, заставить злоумышленника пользоваться методами динамики, чтобы обеспчить функционирование безопасности модуля на этапе исследования 2. в динамике собирать различные параметры функционирования и перемешивать код при обнаружении проблем