Denuvo не снижает производительность в играх — относительно свежий вброс от PR-манагеров денуво гмбх, нацеленный на полоумных дебилов и детишек. На деле фраза представляет собой натуральный взаимоисключающий параграф в концентрированном виде:
Спискота из убийственных фактов [скрыть]
DENUVO использует виртуальную машину(VM), которая сама по себе один большой сл-о-о-о-упо-о-о-к;
64-битная разрядность, которая сама по себе ещё больше нагружает виртуальную машину (вдвое больше регистров надо сохранить в стеке, на каждый примитив валится дополнительная нагрузка по оперированию с регистрами, разрастание лент p-code до невероятных размеров, увеличение количества багов в геометрической прогрессии);
По количеству отводимого места в исполняемом файле виртуальная машина DENUVO равна примерно четырем виртуальным машинам SecuROM'а. Однако-с, оптимизация-с!
Безусловные переходы (JMP) для одной или небольшой группы asm инструкций - дебильная и давно не актуальная фича VM Денувки, которая досталась ей в наследство от VM Секурома 8-ой версии. То, что все JMP легко убираются при трассировке даже самым примитивным фильтром, который пишется на коленке за 5 минут, австрийские разработчики, которые сидят в Европе, видимо, до сих пор не в курсе;
Зато для центрального процессора (CPU) тьма денувьих безусловных переходов - это настоящий кошмар! Мурыжить он их будет ещё дольше, чем брутфорс MD5 хэша;
Но съехавшему с катушек Рейнгарду этого показалось мало, и он решил перевыполнить план по уменьшению скорости исполнения кода (хотя в том же Секуроме старался блюсти обратное): были добавлены дублирующеся ветки исполнения кода с условными переходами (conditional double-branches ). Смысл сей фигни заключается в том, что Денувке насрать на флаги CPU и, соотвественно, на то, выполнится условный переход или нет - в любом случае код будет одним и тем же. Стоит ли говорить про необоснованное разрастание объёмов программы и времени её исполнения?
Засирание памяти приложения страничками в 4096 байт. Коих over 2000 штук. Самое печальное, что исполняемого кода там с десяток инструкций, из которых реально полезны от силы одна или две;
Изнасилование оригинальной точки входа (OEP) и CPUID для шифрования;
Создание лишнего GUARD-потока, который на протяжении всей игры в цикле трахает Ваш центральный процессор (на самом деле он сторожит целостность одной низкоуровневой функции, чтобы нельзя было присоединиться отладчиком). Толку от этого только абсолютно никакого!
Плохая оптимизация. Для статических функций Денувы, которые открыты, компилятор включен с опцией «Индусский код».
Для просмотра ссылки Зарегистрируйтесь