Информационная безопасность


4. Алгоритмы процесса обфускации - часть 2


Алгоритм Колберга имеет такую последовательность операций:

  1. Загрузка элементов "{С1,С2}" программы "А".
  2. Загрузка библиотек "{L1,L2}".
  3. Осуществление обфускации над программой "А", путем выделения фрагмента кода "S" и определения наиболее эффективного процесса трансформации для него. Этот этап повторяется до тех пор, пока не будет, достигнут требуемый уровень обфускации "RequireObfuscation" или допустимое увеличение ресурсов "AcceptCost".
  4. Генерация трансформируемой программы "А`".

Алгоритм Колберга считается общим алгоритмом осуществления !процесса обфускации (то есть он не определяет, как именно должен осуществляться, тот или иной !метод обфускации), ниже будет рассмотрен более специализированный алгоритм, так как он описывает последовательность осуществления одного из методов обфускации, а именно обфускации управления.

Chenxi Wang`s алгоритм.

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

  • создание графа потока управления этой процедуры (граф задаётся множеством блоков и множеством связей соединяющих их), после чего граф разбивается, путем замены циклических конструкций в нем на конструкции типа "if (условие) goto", ().

  • нумерация всех блоков в графе, и добавление в код процедуры переменной (например "swVar") хранящей номер следующего выполняемого блока
  • приведение графа к однородному ("плоскому") виду ()

Выше описанный вариант алгоритма обфускации ("Chenxi Wang`s algorithm") является не сильно устойчивым, так как определить следующий выполняемый блок, нетрудно (он в нашем случае будет храниться в переменной "swVar"). Поэтому для повышения его устойчивости вводят массив (например "@gg"), содержащий помимо номеров блоков, не нужную информацию, в результате запись "$swVar = S6", можно заменить на нечто подобное "$swVar = $gg[$gg[1] + $gg[3]]".




- Начало -  - Назад -  - Вперед -



Книжный магазин