Некоторые методы обфускации кода для защиты программного обеспечения:
- Преобразование данных. 1 Данные, используемые программой, преобразуются в иную форму, что усложняет возможность обратного инжиниринга. 1 Например, для усложнения читабельности кода используют двоичную форму записи чисел. 1
- Обфускация потока управления. 1 Порядок операторов выполнения программы изменяется, что делает логику программы абсурдной или даже недетерминированной. 1
- Обфускация адресов. 1 Изменяется структура хранения данных, чтобы усложнить их использование. 1 Например, алгоритм может выбирать случайные адреса данных в памяти, а также относительные расстояния между различными элементами данных. 1
- Регулярное обновление кода. 1 Этот метод предотвращает атаки, регулярно выпуская обновления обфусцированного программного обеспечения. 1
- Обфускация инструкций ассемблера. 1 Преобразование и изменение ассемблерного кода затрудняет процесс обратного инжиниринга. 1 Например, используют перекрывающиеся инструкции, в результате чего дизассемблер может произвести неправильный вывод. 1
- Обфускация отладочной информации. 1 Отладочную информацию можно использовать для обратного проектирования программы, поэтому важно блокировать несанкционированный доступ к данным отладки. 1 Инструменты обфускации достигают этого, изменяя номера строк и имена файлов в отладочных данных или полностью удаляя из программы отладочную информацию. 1
Зачастую при обфускации используют комбинацию из нескольких техник для достижения многоуровневого эффекта и повышения безопасности кода. 2