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

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

Обфускация графа потока управления

Читайте также:
  1. III. Поле потока с изменением плотности
  2. IV. POD канала потока с изменением плотности
  3. IV. ОРГАНИЗАЦИОННАЯ СТРУКТУРА И ОРГАНЫ УПРАВЛЕНИЯ ОРГАНИЗАЦИИ.
  4. Административные реформы. Изменения в системе государственного управления
  5. Аккумуляторная батарея служит источником напряжения 50 В для катушек аппаратов, осветительных и сигнальных ламп при неработающем генераторе управления.
  6. Алмазы, «международный терроризм» и новые способы управления глобальными рынками
  7. Амчел подчиняет себе ландграфа
  8. Анализ организации управления маркетингом, предприятием
  9. Анализ организационной структуры управления ресторана.
  10. Анализ эффективности управления товарным ассортиментом в магазине ИП Жаркова

Обфускация такого вида осуществляет запутывание потока управления, то есть последовательности выполнения программного кода.

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

Основная идея устойчивых непрозрачных предикатов состоит в том, что в программу, в процессе обфускации добавляется код, который создает набор динамических структур, а также глобальных указателей, которые будут ссылаться на различные элементы внутри этих структур. Помимо этого, данный код должен иногда обновлять эти структуры (добавлять новые элементы в них, объединять или разделять некоторые их них, изменять значения глобальных указателей, и т.д.), но таким образом, чтобы при этом были сохранены некоторые условия, например «указатель p и q никогда не будут указывать на один и тот же элемент» или «указатель p может ссылаться (указывать) на указатель q» и т.д. Эти условия в последствии позволяют создавать требуемые непрозрачные предикаты [4].

Способами применения обфускации графa потока управления являются:

а) непрозрачные предикаты. Переменная v является непрозрачной, если существует свойство p относительно этой переменной, которое априори известно в момент запутывания программы, но трудноустанавливаемо после того, как запутывание завершено. Аналогично, предикат P называется непрозрачным, если его значение известно в момент запутывания программы, но трудноустанавливаемо после того, как запутывание завершено. Непрозрачные предикаты могут быть трёх видов: PF - предикат, который всегда имеет значение «ложь», PT - предикат, который всегда имеет значение «истина», и PX - предикат, который может принимать оба значения, и в момент запутывания текущее значение предиката известно. Однако дело в том, что стойкость ко взлому данного метода определяется стойкостью самого непрозрачного предиката, а чем выше его стойкость, тем больше он сложнее, а следовательно увеличивается время его выполнения и количество кода. Поэтому этот метод не будет использован;

б) вставка недостижимого кода. Если в программу внесены непрозрачные предикаты видов PF или PT, ветки условия, соответствующие условию «истина» в первом случае и условию «ложь» во втором случае, никогда не будут выполняться. Фрагмент программы, который никогда не выполняется, называется недостижимым кодом. Эти ветки могут быть заполнены произвольными вычислениями, которые могут быть похожи на действительно выполняемый код, например, собраны из фрагментов той же самой функции[9]. Поскольку недостижимый код никогда не выполняется, данное преобразование влияет только на размер запутанной программы, но не на скорость её выполнения. Поэтому использоваться этот метод также не будет;

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

г) добавление избыточного кода. Избыточный код, в отличие от мёртвого кода выполняется, и результат его выполнения используется в дальнейшем в программе, но такой код можно упростить или совсем удалить, так как вычисляется либо константное значение, либо значение, уже вычисленное ранее. Для внесения избыточного кода можно использовать алгебраические преобразования выражений исходной программы или введение в программу математических тождеств;

д) вставка в условиях циклов непрозрачных предикатов (Extend Loop Condition) Не будет использоваться по той же причине, что и в пункте а;

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

ж) разбиение кода на блоки и выполнение данных блоков посредством диспетчеризации (Control Flow Flattening);

з) использование сетей Петри (Petri Net). Способ изменения графа потока управления посредством добавления множества фиктивных невозвратимых путей выполнения. Очень эффективен в использовании с множеством потоков. Однако не подходит для общего случая линейной программы. Поэтому использоваться не будет;

и) манипуляция ссылками (Aliasing through pointer manipulation). Расстановка по коду сравнений с мутирующими объектами, способными делиться и объединяться, а так же предоставляющих механизм ссылок посредством которых их можно сравнивать. Является некоторой формой непрозрачных предикатов. Не будет использоваться по той же причине, что и в пункте а.

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

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

 




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

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


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