Известно, что любое коммерческое приложение, будь то многопользовательская игра или же корпоративное приложение может нуждаться в защите от reverse engineering'а (обратной разработки).
В этой статье мы рассмотрим один из методов защиты С++ приложения, который называется Compile time string obfuscation. Но обо всем по порядку.
Что же такое обфускация кода и для чего она нужна?
Обфускация кода — это программные методы затрудняющие реверс инжиниринг Вашего приложения, что бы защитить важные данные внутри программы. Например Ваше приложение использует ZIP архивы с паролем + сжатие по алгоритму Хаффмана и накрытые AES-256 шифрованием. Однако, как то же Ваше приложение получает доступ к архивам? В этом и заключается задача обфускации - максимально затруднить а то и вовсе сделать невозможным получения метода, пароля, алгоритма открытия Ваших архивов.
А почему бы не использовать VMProtect?
VMProtect, Themida, Armadillo, Enigma и другие протекторы к сожалению в силу их популярности и публичности имеют низкую криптостойкость. Например для того же VMProtect существуют скрипты для OllyDbg позволяющие "снять" протектор, можно сказать в автоматическом режиме, нажатием одной кнопки.
Compile time string obfuscation
Данный метод позволяет зашифровывать значения string на этапе сборки приложения в Visual Studio.
Исходный код ниже:
Пример использования готового кода:
Как мы видим все достаточно просто. Данная функция идентична функции того же VMProtect.DecryptString("ваша строка здесь").
Так же Вы можете скопировать данный код здесь (Pastebin).