Найти тему
Digital Anvil

Обфускация исходного кода С++

Оглавление

Известно, что любое коммерческое приложение, будь то многопользовательская игра или же корпоративное приложение может нуждаться в защите от reverse engineering'а (обратной разработки).

В этой статье мы рассмотрим один из методов защиты С++ приложения, который называется Compile time string obfuscation. Но обо всем по порядку.

Что же такое обфускация кода и для чего она нужна?

Обфускация кода — это программные методы затрудняющие реверс инжиниринг Вашего приложения, что бы защитить важные данные внутри программы. Например Ваше приложение использует ZIP архивы с паролем + сжатие по алгоритму Хаффмана и накрытые AES-256 шифрованием. Однако, как то же Ваше приложение получает доступ к архивам? В этом и заключается задача обфускации - максимально затруднить а то и вовсе сделать невозможным получения метода, пароля, алгоритма открытия Ваших архивов.

А почему бы не использовать VMProtect?

VMProtect, Themida, Armadillo, Enigma и другие протекторы к сожалению в силу их популярности и публичности имеют низкую криптостойкость. Например для того же VMProtect существуют скрипты для OllyDbg позволяющие "снять" протектор, можно сказать в автоматическом режиме, нажатием одной кнопки.

Compile time string obfuscation

-2

Данный метод позволяет зашифровывать значения string на этапе сборки приложения в Visual Studio.

Исходный код ниже:

-3

-4

-5

-6

Пример использования готового кода:

-7

Как мы видим все достаточно просто. Данная функция идентична функции того же VMProtect.DecryptString("ваша строка здесь").

Так же Вы можете скопировать данный код здесь (Pastebin).