Метод и средства защиты исполняемого программного кода от динамического и статического анализа


Download 482 Kb.
bet10/20
Sana18.06.2023
Hajmi482 Kb.
#1555637
TuriРеферат
1   ...   6   7   8   9   10   11   12   13   ...   20
Bog'liq
Аранов, Владислав Юрьевич

store64_8 reg8, 4
store64_16 reg4, 16


46


  1. Класс операций пересылки данных


Инструкции виртуальных машин, осуществляющие пересылку данных, являются аналогом ассемблерной команды mov за тем исключением, что машины архитектуры х86 не поддерживают адресации типа память - память; одно из обрабатываемых чисел обязательно должно находиться в регистре или представлять собой непосредственное значение. Генерируемые виртуальные машины это жесткое правило соблюдать не будут. Арифметические операции над данными в памяти будут разрешены. Таким образом, для выполнения арифметической операции данные не надо будет предварительно класть в стек и, таким образом, мы усложним проблему анализа языка виртуальной машины.
Пример:
temp := а а : = Ь b := temp Код на языке ассемблер: mov еах, а mov ebx, b xchg еах, ebx
Код на языке виртуальной машины: chgvm_mm а, Ь
Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника в приемник.
Для создания многообразия команд пересылки данных варьируются параметры операндов.

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

  • Размер операндов может быть одним из следующих: 8, 16, 32, 64, 80 бит.

  1. Получение полного набора инструкций

У разных процессоров системы команд существенно различаются по количеству, составу, а так же семантикой. Если рассматривать количество команд, то у процессора 8086 — 133


47




команды. У современных мощных процессоров количество команд достигает нескольких сотен [23].
Как было сказано в разделе 2, имея исходный алгоритм, можно построить виртуальную машину, содержащую не полный по Тьюрингу набор команд, а набор команд достаточный для выполнения данного алгоритма. Кроме того, набор инструкций генерируемых протектором явно избыточен. Из раздела 3 видно, что общее число команд, создаваемое генератором виртуальных машин, составляет около 8*103 команд. Этот набор включает множество одинаковых инструкций с различной семантикой, например, он содержит множества одинаковых инструкций, у которых отличается только размер операндов. Таким образом, если использовать весь набор этих инструкций, то защищенные файлы будут весить гораздо больше исходных, так как виртуальная машина записывается в защищенный исполняемый файл. Кроме того это предоставляет большое количество данных для анализа системы защиты злоумышленником. Поэтому для каждой виртуальной машины произвольным образом из всего многообразия выбирается функционально­полный набор из 200 команд, причем состав этого набора будет специфичный для каждого запуска генератора виртуальных машин. Число 200 выбрано, как среднее число команд у современных процессоров.
Очевидный способ ограничения набора инструкций - использовать из множеств одинаковых инструкций с различными длинами операндов, только одну инструкцию с произвольным размером операндов. Это так же повысит надежность защиты генератора, так как добавится еще один параметр варьирования.
Кроме того, можно ограничить число используемых инструкций, используя инструкции только с определенным типом операндов для всех команд кроме команд пересылки данных. Благодаря многообразию команд пересылки данных, одни типы операндов преобразуются к другим, и набор команд остается функционально-полным.
Кроме того, существуют различные инструкции, которые могут быть выражены друг через друга. К ним относятся логические инструкции, и инструкции сравнения, а так же инструкции циклического сдвига. Рассмотрим их подробнее.

  1. Полнота подмножеств инструкций

Рассмотрим следующие множества логических инструкций:


48





  1. Логические инструкции


Пусть Р = U0”Pn - это множество всех булевых функций с знаками операций из множества { л, v, -i, © } .

Download 482 Kb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   ...   20




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling