172.66K

Защита программного обеспечения от реверс-инжиниринга

1.

Защита программного обеспечения
от реверс-инжиниринга
Курсовая работа
студента 4 курса 451 группы Д. А. Калентьева
Саратовский государственный университет
Им. Н.Г. Чернышевского
Кафедра математической кибернетики
и компьютерных наук
Научный руководитель: к. т. н., доцент
Петров Д. Ю.
2020 г.

2.

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

3.

Объект, предмет и цель исследования
Объект исследования составляет защита программного
обеспечения.
Предмет исследования составляют особенности защиты
программного обеспечения от реверс-инжиниринга.
Цель исследования заключается в рассмотрении защиты
программного обеспечения от реверс-инжиниринга.
3

4.

Постановка задач
1. Рассмотреть теоретико-методологические основы механизма
работы реверс-инжиниринга и методов защиты программного
обеспечения;
2. Рассмотреть технологии защиты программного обеспечения
разработчиков от вредоносного реверс-инжиниринга.
4

5.

Теоретико-методологические основы реверс-инжиниринга
и методов защиты программного обеспечения
Три основных технологии
реверс-инжиниринга
объектного кода
Эмуляция
Двоичная
трансляция
Получение
исходного кода
5

6.

Теоретико-методологические основы реверс-инжиниринга
и методов защиты программного обеспечения
Технологии защиты ПО
от реверс-инжиниринга
Шиврование на
основе операций XOR
Мутация кода
Антивиртуализация
Вирутализация
Бинарная
модификация
Стенограф
Самопроверка
Упаковка
Анти-отладка
Обфускация
6

7.

Механизм защиты ПО от вредоносного реверс-инжиниринга
на примере результирующего ассемблерного кода
Допустим,
Если
мы
у нас есть данный код:
исполняемый
скомпилируем
файл,
мы
этот
код
в
увидим
это
в
дизассемблере:
int count = 0;
for (int i = 0; i < 10; ++i)
{
count++;
}
std::cout << count;
004113DE loc_4113DE:
004113DE
mov
eax, [ebp-14h]
004113E1
add
eax, 1
004113E4
mov
[ebp-14h], eax
004113E7 loc_4113E7:
004113E7
cmp
[ebp-14h], 0Ah
004113EB
jge
short loc_4113F8
004113ED
mov
eax, [ebp-8]
004113F0
add
eax, 1
004113F3
mov
[ebp-8], eax
004113F6
jmp
short loc_4113DE
004113F8 loc_4113F8:
004113F8
mov
ecx, ds:?cout@std
004113FE
push
eax
00411400
call
ds:basic_ostream@operator<<(int)
00411404
xor
eax, eax
00411406
retn
7

8.

Механизм защиты ПО от вредоносного реверс-инжиниринга
на примере результирующего ассемблерного кода
Посмотрим, что будет, если мы скомпилируем этот код с
помощью релизной сборки:
00401000 main
proc near
00401000
mov
ecx, ds:?cout@std
00401006
push
0Ah
00401008
call
ds:basic_ostream@operator<<(int)
0040100E
xor
eax, eax
00401010
retn
00401010 main
endp
8

9.

Заключение курсовой работы
Непосредственно
исходный код
Идея кода
(принципы кода)
9

10.

Список использованных источников
1.
Аёшин И. Т. Реверс-инжиниринг программного продукта с использованием IDA Pro // Актуальные проблемы авиации и космонавтики. – 2018.
– Т. 3. – №. 4. – С. 808-809.
2.
Зеленин А. Реверс-инжиниринг-прямое копирование изделия или создание с «нуля» // Горная промышленность. – 2019. – №. 1. – С. 82-82.
3.
Картак В. М., Гатиятуллин Т. Р. Методы обфускации кода для компьютерных вирусов // Проблемы современной науки и образования. – 2018. –
№. 3 (123). – С. 186-189.
4.
Касперский К. Искусство дизассемблирования. – БХВ-Петербург, 2009. – 896 с.
5.
Касперский К. Образ мышления – дизассемблер. IDA Pro. 2001. – 425 с.
6.
Михеев И. В., Виштак О. В., Кондратов Д. В. Система количественных характеристик оценки качества программных продуктов //
Программные системы и вычислительные методы. – 2018. – №. 2. – С. 28-34.
7.
Плешков П. Д., Плешков В. Д., Анзулевич А. П. Реализация системы противодействия реверс-инжинирингу ПО с применением методов
обфускации // Печатается по решению совета математического факультета Челябинского государственного университета. – 2018. – Т. 29. – С.
159-165.
8.
Ревнивых А. В., Велижанин А. С. Исследование дизассемблированного представления исполняемых файлов, сформированных различными
компиляторами. Пример уязвимости на переполнение буфера // Кибернетика и программирование. – 2019. – №. 1. – С. 1-16.
9.
Ревнивых А. В., Велижанин А. С. Метод автоматизированного исследования структуры дизассемблированного представления программного
кода с уязвимостью на переполнение буфера с использованием матричного подхода // Кибернетика и программирование. – 2018. – №. 6. – С.
11-29; и другие.
10

11.

Спасибо за внимание!
11
English     Русский Правила