Обоснование метода защиты программного кода на основе правильных скобочных последовательностей

Содержание

Слайд 2

2 ЦЕЛЬ РАБОТЫ Объект исследования: методы маскирования информации о используемых в

2

ЦЕЛЬ РАБОТЫ

Объект исследования: методы маскирования информации о используемых в программах расчетных

выражений .

Цель магистерской работы: исследование и разработка метода маскирования программного кода расчетных зависимостей с использованием правильных скобочных последовательностей

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

Для достижения поставленной цели в работе использовались элементы теории компиляторов, методы теории информации и комбинаторики.

Слайд 3

АКТУАЛЬНОСТЬ РАБОТЫ 3 Разработка наиболее эффективного метода защиты программного продукта становиться

АКТУАЛЬНОСТЬ РАБОТЫ

3

Разработка наиболее эффективного метода защиты программного продукта становиться одной из

важных задач программистов, занимающихся разработкой специализированного платного программного обеспечения

Надёжная защита кода нужна в тех случаях, когда код содержит важные торговые секреты фирмы, уникальные алгоритмы или расчетные зависимости.

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

Суть процесса обфускации заключается в том, чтобы запутать программный код и устранить большинство логических связей в нем, то есть трансформировать его так, чтобы он был очень труден для изучения и модификации посторонними лицами

Слайд 4

Исходный код программы PR1 Обфускатор TR Модифицированный исходный код №1 PR2_1

Исходный
код программы
PR1

Обфускатор
TR

Модифицированный
исходный код №1
PR2_1

Параметр
№1

Компилятор

Модифицированный
исходный код №1
PR2_2

Исполняемый
код №1

Исполняемый
код №1

Результат

Параметр
№1

Параметр
№2

4

форматирования, которые изменяют только внешний вид программы;
преобразования структур данных, изменяющие структуры данных, с которыми работает программа;
преобразования потока управления программы, которые изменяют структуру её графа потока управления.

ПРОЦЕСС И МЕТОДЫ ОБФУСКАЦИИ

Слайд 5

5 ОСНОВНАЯ ИДЕЯ ПРЕДЛАГАЕМОГО МЕТОДА Суть метода заключается в усложнении представления

5

ОСНОВНАЯ ИДЕЯ ПРЕДЛАГАЕМОГО МЕТОДА

Суть метода заключается в усложнении представления математических

выражений в коде программы, за счет “вставки” в них дополнительного набора парных скобок, не изменяющих нужный порядок вычислений.

1.Пусть в алгоритме программы предусмотрена необходимость выполнения следующего выражения
X =A+B*(C*sin(D)-E*cos(D)) (1)
которое при ранее заданных значениях A,B,C,D и E дает значение X=X1
2. В исходном коде программы записывается выражение
X =A+B*C*sin(D)-E*cos(D) (2) X=X2 (X1 ≠ X2 )
3. Пусть в программе имеется некая функция ,которая по какому то алгоритму вставляет в нужное место выражения (2) правильную скобочную последовательность ( ( ) ) таким образом, чтобы выражение (2) приобрело вид
X =A+( B*(C*sin(D)-E*cos(D) ) ) (3) X=X3 (X1 = X3)

Такое преобразование по не только восстанавливает порядок вычисления, но и добавляет в исходную зависимость дополнительную парную скобку, не изменяющую порядок вычислений.

Слайд 6

{ float x,a,b,c,d; b=5.5; c=3.3; d=10; a=b+c+d; x=a*a+b*c+sin(c)-d; printf("%f",x); return 0;

{
float x,a,b,c,d;
b=5.5; c=3.3; d=10;
a=b+c+d;
x=a*a+b*c+sin(c)-d;
printf("%f",x);
return 0; }

{

float x,a,b,c,d;
b=5.5; c=3.3; d=10;
a=((((b)+(c)+(d))));
x=(((a*a)+(b*c)+(sin(c)-d)));
printf("%f",x);
return 0; }

6

ВЛИЯНИЯ КОМПИЛЯТОРА

Слайд 7

7 ПРИМЕНЕНИЕ МЕТОДА

7

ПРИМЕНЕНИЕ МЕТОДА

Слайд 8

ПРАВИЛЬНЫЕ СКОБОЧНЫЕ ПОСЛЕДОВАТЕЛЬНОСТИ Правильная скобочная последовательность (ПСП) — символьная последовательность, составленная

ПРАВИЛЬНЫЕ СКОБОЧНЫЕ ПОСЛЕДОВАТЕЛЬНОСТИ

Правильная скобочная последовательность (ПСП) — символьная последовательность, составленная в

алфавите, состоящем из символов, сгруппированных в упорядоченные пары (типы скобок «(» и «)», «[» и «]», и т. п.), удовлетворяющая определённым правилам, обеспечивающим последовательную вложенность подпоследовательностей, обрамлённых открытой и закрытой скобкой одного типа.

Количество ПСП для заданного количества пар скобок
одного типа определяется числом Каталана
C n = ( 2n)! / ( n! (n+1)! )
где n - количества пар скобок одного типа

8

Слайд 9

СИНТАКСИЧЕСКИЙ АНАЛИЗ СТРОКИ Синтаксический анализ ( парсинг) — процесс сопоставления линейной

СИНТАКСИЧЕСКИЙ АНАЛИЗ СТРОКИ

Синтаксический анализ ( парсинг) — процесс сопоставления линейной последовательности

слов( токенов) языка программирования с его формальной грамматикой.
Синтаксический анализ - это основа всех компиляторов и интерпретаторов с языков высокого уровня.
В ходе синтаксического анализа исходный текст преобразуется в структуру данных, обычно — в дерево, которое отражает синтаксическую структуру входной последовательности и хорошо подходит для дальнейшей обработки

9

Слайд 10

10 РЕАЛИЗАЦИЯ ФУНКЦИЙ ГЕНЕРАЦИИ ПРАВИЛЬНОЙ СКОБОЧНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ Программная реализация была осуществлена

10

РЕАЛИЗАЦИЯ ФУНКЦИЙ ГЕНЕРАЦИИ ПРАВИЛЬНОЙ СКОБОЧНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ

Программная реализация была осуществлена на

языке JAVA в среде BluеJ. 
BluеJ — интерактивная среда разработки на языке Java, подходящая для разработки небольших программ.
Слайд 11

11 РЕАЛИЗАЦИЯ СИНТАКСИЧЕСКОГО АНАЛИЗАТОРА СТРОКИ

11

РЕАЛИЗАЦИЯ СИНТАКСИЧЕСКОГО АНАЛИЗАТОРА СТРОКИ

Слайд 12

Научная новизна состоит в разработке метода запутывания исходного кода программы, основанном

Научная новизна состоит в разработке метода запутывания исходного кода программы, основанном

на применении правильных скобочных последовательностей , и позволяющим скрыть порядок действий в расчетных зависимостях программы при обфускации.
Практическое значение работы заключается в разработке алгоритмов и программных модулей генерации правильной скобочной последовательности и синтаксического анализатора строк
Область применения. Разработанная методика запутывания исходного кода может применяться для затруднения декомпиляции/отладки, изучения программ с целью обнаружения функциональности и обхода систем проверки лицензий.

ЗНАЧЕНИЕ РАБОТЫ

12

Слайд 13

Дальнейшее развитие работы Дальнейшим развитием исследований в этом направлении целесообразно проводить

Дальнейшее развитие работы

Дальнейшим развитием исследований в этом направлении целесообразно проводить

в направлении теоретического обоснования предложенного метода и разработки эвристических алгоритмов наложения строкового представления расчетных зависимостей и правильных скобочных последовательностей

13