Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-58.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
864.92 Кб
Скачать

Вопрос 37. Защита программ от исследования. Методы и средства защиты.

Статистический метод. Исследование программ без запуска на выполнение. Могут анализировать сам файл, динамический библиотеки. Реализ - дизассемблер. Дизассемблеры – преобразуют исполняемый файл в ассемблерный листинг:

  • интерактивные - анализируют файл сразу после открытия. Интерактивность заключается в том, что при исследовании данные можно переопределить в код и т.д., т.е. давать команду, которую дизассемблер будет сразу выполнять;

  • пакетные - требуют предварительной настройки.

Динамический метод. Предполагает функционирование программы под управлением, т.е. под контролем управляющей программы. Реализуется через отладчики. Отладчики делятся на 2 группы: отладчики прикладного уровня (3-го); отладчики уровня ядра (0-го). Существуют также эмуляционные отладчики – создают среду, скрывающие работу под отладчиком.

Методы защиты от дизассемблера:

  1. преобразование прогр 1 - Самомодифицирующийся код.

Шифрование части кода: статическое (при запуске программы расшифровывается вся программа), динамическое (программа расшифровывается и перемещается в ОП фрагментами).

2 Использовать ложные фрагменты. Дописывается фрагмент, который выполняет действия не связанные с логикой проги, при запуске он загружается в ОП. Затем вместо него загружается нужный фрагмент.

  1. усложнение стр-ры

-Использование ложных функций; -Разнесение фрагментов программы осуществляющих считывание, проверку, выдачу результатов; -Создание ложных вызовов

Методы защиты от отладчиков:

Обнаружение работы - поиск отладчика на ЖД (поиск библиотеки nmtrans.dll); контроль времени выполнения –когда прога под отладкой, то она работает медленнее. Занять 1 и 3 прерывание самой прогой(т.е. запуск прогр в режиме отладки); замусоривание регистров отладки; работа с таблицей векторов прерываний; запуск проги в несколько потоков; использование контрольной суммы(прерывание int 34 подсчитывает значение), предусматривает расчет контрольной суммы на часть кода и хранение в проге. Когда прога загружается по частям, то при завершении одного участка память затирается. Тем самым точки останова тоже убираются. Усложнение алгоритма. Вызов ложных функций, которые могут использовать идентификацию информации. Разнесение во времени событий ввода и проверки идентифицирующей информации. Функции обрабатывают информацию, но результат никуда не идет.

Программные протекторы

Относят к навесной защите. Добавляются после разработки программы. Протекторы реализуют защиту от исследования. Могут добавлять временные и функциональные ограничения. После запуска защищенного файла управление передается протектору – проверка регистрации проги, далее преобразование защищаемой проги и передача управления ей; работа самой программы.

Основной метод зашиты: шифрование. Шифруется большая часть данных, программных ресурсов, производится перенастройка таблицы импорта, скрытие точки входа. Часть защищаемого кода переносится в протектор. Используется динамическое шифрование, программа расшифровывается по частям. Протектором разрабатывается собственный API. Также для усиления используется структурная обработка исключений. Для надёжного скрытия точки входа в программу большая часть кода переносится в тело протектора. Для надёжной защиты таблицы импорта исключаются названия импортируемых функций. При запуске замкнутой программы управление получает код протектора. Этот фрагмент выполняет различные проверки. Если проверка положительна, то управление передается распаковщику, который расшифрованные данные. Недостатки: замедление работы программы; возможная нестабильная работа; влияние на стабильность работы ОС.

Защитные приемы:

  1. шифрование исполняемого кода, либо его критической области;

  2. шифрование большей части данных;

  3. шифрование ресурсов;

  4. модификация таблицы импорта (практическая реализация зависит от протектора);

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

  6. к защищаемой проге добавляется код протектора (часть протектора выполняет проверки и т.д.);

  7. использование виртуальных процессоров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]