Рассмотрим основные методы:
· алгоритмы запутывания: используются хаотичные переходы в разные части кода, внедрение ложных процедур-«пустышек», холостые циклы, искажение количества реальных параметров процедур ПС, разброс участков кода по разным областям ОЗУ;
· алгоритмы мутации: cоздаются таблицы соответствия операндов-синонимов и замена их друг на друга при каждом запуске программы по определенной схеме или случайным образом, случайные изменения структуры программы;
· алгоритмы компрессии данных: программа упаковывается, а затем распаковывается по мере выполнения;
· алгоритмы шифрования данных: программа шифруется, а затем расшифровывается по мере выполнения;
· вычисление сложных математических выражений в процессе отработки механизма защиты: элементы логики защиты зависят от результата вычисления значения какой-либо формулы или группы формул;
· методы затруднения дизассемблирования: используются различные приемы, направленные на предотвращение дизассемблирования в пакетном режиме;
· методы затруднения отладки: используются различные приемы, направленные на усложнение отладки программы;
· эмуляция процессоров и операционных систем: создаются виртуальный процессор и/или операционная система (не обязательно реально существующие) и программа-переводчик из системы команд IBM в систему команд созданного процессора или ОС; после такого перевода ПС может выполняться только при помощи эмулятора, что резко затрудняет исследование алгоритма ПС;
· нестандартные методы работы с аппаратным обеспечением: модули системы защиты обращаются к аппаратуре ЭВМ, минуя процедуры операционной системы, и используют мало известные или недокументированные ее возможности;
· шифрование защищаемого ПС:для дезактивации защиты необходимо определение ключа дешифрации ПС;
· комбинированные методы.