Метод и средства защиты исполняемого программного кода от динамического и статического анализа
Download 482 Kb.
|
Аранов, Владислав Юрьевич
- Bu sahifa navigatsiya:
- Получение полного набора инструкций
- Полнота подмножеств инструкций
- Логические инструкции Пусть Р
store64_8 reg8, 4
store64_16 reg4, 16 46
Инструкции виртуальных машин, осуществляющие пересылку данных, являются аналогом ассемблерной команды mov за тем исключением, что машины архитектуры х86 не поддерживают адресации типа память - память; одно из обрабатываемых чисел обязательно должно находиться в регистре или представлять собой непосредственное значение. Генерируемые виртуальные машины это жесткое правило соблюдать не будут. Арифметические операции над данными в памяти будут разрешены. Таким образом, для выполнения арифметической операции данные не надо будет предварительно класть в стек и, таким образом, мы усложним проблему анализа языка виртуальной машины. Пример: temp := а а : = Ь b := temp Код на языке ассемблер: mov еах, а mov ebx, b xchg еах, ebx Код на языке виртуальной машины: chgvm_mm а, Ь Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника в приемник. Для создания многообразия команд пересылки данных варьируются параметры операндов. В качестве первого операнда (приемника) может выступать регистр, указатель на ячейку в памяти, или регистр, содержащий адрес ячейки памяти. В качестве второго (источника)- конкретное значение, регистр, указатель на ячейку в памяти, или регистр, содержащий адрес ячейки памяти. Размер операндов может быть одним из следующих: 8, 16, 32, 64, 80 бит. Получение полного набора инструкций У разных процессоров системы команд существенно различаются по количеству, составу, а так же семантикой. Если рассматривать количество команд, то у процессора 8086 — 133 47 команды. У современных мощных процессоров количество команд достигает нескольких сотен [23]. Как было сказано в разделе 2, имея исходный алгоритм, можно построить виртуальную машину, содержащую не полный по Тьюрингу набор команд, а набор команд достаточный для выполнения данного алгоритма. Кроме того, набор инструкций генерируемых протектором явно избыточен. Из раздела 3 видно, что общее число команд, создаваемое генератором виртуальных машин, составляет около 8*103 команд. Этот набор включает множество одинаковых инструкций с различной семантикой, например, он содержит множества одинаковых инструкций, у которых отличается только размер операндов. Таким образом, если использовать весь набор этих инструкций, то защищенные файлы будут весить гораздо больше исходных, так как виртуальная машина записывается в защищенный исполняемый файл. Кроме того это предоставляет большое количество данных для анализа системы защиты злоумышленником. Поэтому для каждой виртуальной машины произвольным образом из всего многообразия выбирается функциональнополный набор из 200 команд, причем состав этого набора будет специфичный для каждого запуска генератора виртуальных машин. Число 200 выбрано, как среднее число команд у современных процессоров. Очевидный способ ограничения набора инструкций - использовать из множеств одинаковых инструкций с различными длинами операндов, только одну инструкцию с произвольным размером операндов. Это так же повысит надежность защиты генератора, так как добавится еще один параметр варьирования. Кроме того, можно ограничить число используемых инструкций, используя инструкции только с определенным типом операндов для всех команд кроме команд пересылки данных. Благодаря многообразию команд пересылки данных, одни типы операндов преобразуются к другим, и набор команд остается функционально-полным. Кроме того, существуют различные инструкции, которые могут быть выражены друг через друга. К ним относятся логические инструкции, и инструкции сравнения, а так же инструкции циклического сдвига. Рассмотрим их подробнее. Полнота подмножеств инструкций Рассмотрим следующие множества логических инструкций: множества логических инструкций, множества инструкций сравнения, множества «избыточных» инструкций. 48
Download 482 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling