Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Изучение методов защиты программного обеспечения

Автор:   •  Октябрь 25, 2022  •  Лабораторная работа  •  649 Слов (3 Страниц)  •  182 Просмотры

Страница 1 из 3

Лабораторная работа № 1 – Изучение методов защиты программного обеспечения

Цель работы

Изучение методов защиты программного обеспечения и возможных способов их преодоления.

Формулировка задания

В ходе выполнения лабораторной работы необходимо выполнить следующие действия:

  1. Изучить подходы, применяемые для защиты программного обеспечения [1-21].
  2. Реализовать программу на компилируемом языке (C\C++, Go, Rust, Swift), осуществляющую считывание пароля из файла “password.txt” и в случае совпадения его с заданным, вывод сформированного серийного номера в формате KEY$xxxxxxxxxx$ (x – произвольные символы) в файл “serial.txt”, а также вывод сообщения об успехе в интерфейсе программы, в обратном случае - сообщения об ошибке. Все файлы должны быть расположены в одной директории с исполняемым файлом программы.
  3. В качестве защищаемого программного обеспечения (ПО) может быть выбрана программа, ранее разработанная студентом, либо любое ПО с открытым исходным кодом.
  4. В программе должен быть «полезный функционал», выполнение которого не должно происходить при введении неправильного пароля.
  5. Осуществить модификацию исполняемого файла (бинарный патчинг) таким образом, чтобы результат проверки пароля всегда был положительным.
  6. В отчете привести описание осуществленных действий для нахождения места проверки пароля и модификации файла.
  7. Необходимо реализовать защиту разработанного программного обеспечения от возможности изменения поведения программы при помощи бинарного патчинга.
  8. Реализованная программа должна использовать следующие общие подходы к защите ПО:
  1. Хранение в зашифрованном виде всех строк, в т.ч. выводимых на экран.
  2. Проверка и вывод информации в разных местах программы.
  3. Контроль целостности участков кода, ответственных за проверку «пароля» (подсчет CRC исполняемого кода функции проверки пароля в оперативной памяти во время выполнения программы).
  4. Наличие нескольких проверок пароля в разных местах программы.
  5. Наличие ложных проверок (в т.ч. сразу после считывания «пароля»).
  6. Использование методов запутывания кода для усложнения анализа кода программы.
  1. Защитные механизмы должны быть тесно переплетены с логикой защищаемого кода и распределены по всему «полезному» коду, в случае модификации кода защитных механизмов код полезной нагрузки должен стать некорректным.
  2. Реализованная программа должна использовать:
  1. Не менее 4 методов обнаружения средств отладки и противодействия им.
  2. Не менее 3 методов противодействия дизассемблированию (методы, которые приводят к некорректному дизассемблированию кода, см. главу 15 [1]).
  3. Не менее 2 методов выявления виртуальных машин.
  4. Фрагменты самомодифицирующегося кода.
  5. Методы бинарной обфускации и обфускации потока передачи управления (нелинейная передача управления, например, через исключения [2].
  1. Для реализованной программы произвести обход внедренных механизмов защиты путем бинарного патчинга исполняемого кода.
  2. Произвести упаковку исполняемого файла с использованием одного из распространенных упаковщиков исполняемых файлов (например, UPX).
  3.  Провести анализ принципов работы используемого средства защиты бинарного кода с помощью дизассемблера, отладчика и других программных средств. Найти в отладчике оригинальную точку входа в программу после упаковки файла.
  4.  Сравнить параметры оригинального и упакованного файлов (энтропия).
  5.  В отчете необходимо привести следующую информацию:
  • исходный код программы до внесения в нее механизмов защиты;
  • описание полезной функциональности программы;
  • описание процесса модификации программы без механизмов защиты;
  • перечень механизмов защиты и фрагменты исходного кода, отвечающие за их реализацию;
  • описание принципа действия используемых механизмов защиты;
  • исходный код программы после добавления механизмов защиты;
  • описание процесса обхода реализованных механизмов защиты;
  • описание программы-упаковщика;
  • описание алгоритма упаковки исполняемого файла;
  • фрагмент кода упакованной программы, отвечающий за самораспаковку исполняемого файла (загрузчик), полученный с помощью дизассемблера;
  • схема структуры упакованного файла;
  • параметры исполняемых файлов до и после упаковки (размер файла, энтропия и т.п.).

Список источников

  1. Michael Sikorski, Andrew Honig. Practical Malware Analysis

https://doc.lagout.org/security/Malware%20%26%20Forensics/Practical%20Malware%20Analysis.pdf

  1. Binary Deobfuscation. https://calwa.re/reversing/obfuscation/binary-deobfuscation-preface#indirect-branches
  2. Анти-дизассемблерные приемы

https://www.malwinator.com/2015/11/22/anti-disassembly-used-in-malware-a-primer/

https://www.malwinator.com/2015/11/27/anti-disassembly-techniques-used-by-malware-a-primer-part-2/

...

Скачать:   txt (10.5 Kb)   pdf (105.2 Kb)   docx (14.6 Kb)  
Продолжить читать еще 2 страниц(ы) »
Доступно только на Essays.club