# Словарь терминов

Эффективное использование любого инструмента невозможно без понимания терминологии, специфичной для соответствующей предметной области. В данном глоссарии дана расшифровка терминологии, применяемой в разрезе использования программы VMProtect. Глоссарий не претендует на универсальность и всеохватность, предложенное в нем толкование терминов может отличаться от классического.

Байт-код - код, полученный после преобразования машинных команд реального процессора в команды виртуальной машины.

Виртуализация - процесс преобразования части исполняемого кода приложения в команды виртуальной машины, обладающей неизвестной потенциальному взломщику системой команд, архитектурой и логикой работы. Виртуализированные участки кода выполняются интерпретатором (исполнителем виртуальной машины) без предварительного преобразования в машинные коды процессора. В общем случае задача реинжиниринга виртуализированных фрагментов сводится к изучению архитектуры виртуальной машины, созданию дизассемблера, соответствующего архитектуре имитируемого виртуальной машиной процессора, и анализу дизассемблированного кода.

Виртуальная машина - программный код, непосредственно выполняющий байт-код в защищенной программе.

Водяные знаки - уникальный для каждого пользователя массив байт, позволяющий однозначно идентифицировать легального владельца взломанной копии программы.

Мутация - замена исходной команды аналогом или определенной последовательностью команд, обеспечивающей тот же результат, что и исходная команда.

Обфускация - совокупность методик и средств, направленных на затруднение анализа программного кода. В зависимости от языка программирования, на котором написана защищаемая программа, используются различные типы программ-обфускаторов. При обфускации приложений, написанных на интерпретируемых языках (Perl, PHP и др.), изменения вносятся в исходные тексты: удаляются комментарии, переменным присваиваются бессмысленные имена, выполняется шифрация строковых констант и т.д. При обфускации программ, написанных на Java / .NET, выполняют преобразования байт-кода, обрабатываемого виртуальной машиной. При обфускации скомпилированных программ модифицируют машинный код: в него вносятся "мусорные" команды, "мертвый код", случайные переходы, выполняется мутация исходных команд, часть операций переносится в стек, а также выполняются различные структурные (реже математические) преобразования. При реинжиниринге обфусцированых участков кода их пытаются привести в исходный вид, что при определенном подходе к обфускации становится очень трудоемкой задачей.

Программа-протектор - программа, предназначенная для защиты других программных продуктов от взлома. Подавляющее большинство современных протекторов не модифицируют исходный код приложения, а выполняют его упаковку/шифрацию, при этом основной упор сделан на защиту программы (процедуры) распаковки/расшифровки.

Точка входа в программу (EntryPoint) - представляет собой начальный адрес, с которого начинается исполнение загруженной в память программы.

Упаковка - метод защиты кода приложения, при котором производится сжатие исполняемого файла программы и/или используемых библиотек с помощью нестандартных алгоритмов. При использовании упаковки защищаемый программный код сжимается упаковщиком, а при запуске приложения у конечного пользователя производится его полная или частичная распаковка.

Шифрация - защита части кода приложения с помощью криптостойких алгоритмов. Программное обеспечение, защищенное с помощью шифрации, требует от конечного пользователя ввода кода активации, который снимает установленные разработчиком ограничения незарегистрированной версии.

© 2006-2015 Copyright VMProtect Software