Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Обфускация констант.

Читайте также:
  1. Обфускация графа потока управления

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

- ldc.i4 – загрузка целых чисел типа int32;

- ldc.i8 – загрузка целых чисел типа int64;

- ldc.r4 – загрузка вещественных чисел типа float32;

- ldc.r8 – загрузка вещественных чисел типа float64.

Участвовать в арифметико-логических выражениях, вычисляющих числовые константы, будут инструкции языка CIL, разделённые на три типа:

1) инструкции для загрузки и сохранения значений;

Инструкции для загрузки и сохранения значений выполняют копирование значений на стек вычислений и сохранение значений со стека вычислений в память.

Кроме перечисленных выше, в спецификации CLI определена пара инструкций для чисто стековых манипуляций:

- dup – копирование значения на вершине стека;

- pop – удаление значения с вершины стека.

2) арифметические инструкции;

Бинарные арифметические операции потребляют со стека вычислений два операнда. Их действие можно записать как result:= value1 op value2.

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

К числу инструкций, выполняющих бинарные арифметические операции, относятся:

- add – сложение;

- sub – вычитание;

- mul – умножение;

- div – деление;

- div.un – деление беззнаковых целых чисел;

- rem – остаток от деления;

- rem.un – остаток от деления беззнаковых целых чисел;

- shl – сдвиг целых чисел влево;

- shr – сдвиг целых чисел со знаком вправо;

- shr.un – сдвиг целых чисел без знака вправо;

- and – побитовое И;

- or – побитовое ИЛИ;

- xor – побитовое Исключающее ИЛИ.

К числу инструкций, выполняющих унарные арифметические операции, относятся:

- neg – изменение знака числа;

- not – побитовое НЕ (для целых чисел).

3) инструкции для организации передачи управления.

Для начала рассмотрим инструкции, выполняющие сравнение значений своих операндов. Результатом сравнения являются числа 0 или 1 (типа int32). Число 0 обозначает ложь, а число 1 – истину.

К числу инструкций, выполняющих сравнение значений своих операндов, относятся:

- ceq – сравнение на равенство;

- cgt – сравнение на «больше»;

- clt – сравнение на «меньше»;

- cgt.un – сравнение на «больше» беззнаковых целых чисел или неупорядоченных чисел с плавающей запятой (два числа с плавающей запятой называются неупорядоченными, если хотя бы одно из них равно NaN);

- clt.un – сравнение на «меньше» беззнаковых целых чисел или неупорядоченных чисел с плавающей запятой.

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

Кроме обфускации числовых констант, в процессе «запутывания» программного обеспечения строковые константы должны быть закодированы.

Алгоритм обфускации строк представлен далее на рисунке 5.

 

Рисунок 5 – Алгоритм обфускации строк

 




Дата добавления: 2015-09-10; просмотров: 55 | Поможем написать вашу работу | Нарушение авторских прав

РЕФЕРАТ | Понятие обфускации. Математическая модель процесса обфускации | Обфускация графа потока управления | Обзор существующих библиотек для создания .Net метаинструментов | Расчет затрат на разработку программы и определение экономической эффективности от внедрения программы | Анализ условий труда специалиста на рабочем месте. | Определение класса условий труда | Разработка мероприятий по улучшению условий труда | СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ | Приложение Б. Примеры упражнений для расслаблений отдельных групп мышц |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав