Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Анализ программных реализаций. Практикум
.pdf
81
d. Анализ структуры базы данных программы
9) Какие инструменты могут использоваться для статического анализа
программ?
a. Линтеры (статические анализаторы кода)
b. Компиляторы
c. Анализаторы зависимостей
d. Все вышеперечисленное
10) Что такое динамический анализ программ?
a. Анализ программы во время ее выполнения
b. Анализ исходного кода программы без ее выполнения
c. Анализ результатов тестирования программы
d. Анализ структуры базы данных программы
11) Какие инструменты могут использоваться для динамического анализа
программ?
a. Дебаггеры
b. Профилировщики
c. Инструменты для тестирования
d. Все вышеперечисленное
12) Что такое профилирование программы?
a. Процесс анализа и оптимизации программного кода
b. Процесс разработки алгоритмов программы
c. Процесс тестирования программного обеспечения
d. Процесс измерения и анализа производительности программы
13) Какие данные можно получить при использовании профилировщиков?
a. Время выполнения каждой функции программы

82
b. Объем использованной памяти
c. Количество вызовов функций
d. Все вышеперечисленное
14) Что такое обратная инженерия баз данных?
a. Процесс анализа структуры и связей в базе данных
b. Процесс создания базы данных
c. Процесс оптимизации запросов к базе данных
d. Процесс создания моделей данных для базы данных
15) Какие инструменты могут использоваться для обратной инженерии баз
данных?
a. Диаграммы ER (Entity-Relationship)
b. SQL-скрипты
c. CASE-инструменты
d. Все вышеперечисленное
16) Какой инструмент используется для анализа зависимостей между
компонентами программы?
a. Декомпилятор
b. Деассемблер
c. Инструменты анализа зависимостей (Dependency Analysis Tools)
d. Профилировщик
17) Какой инструмент используется для визуализации алгоритмов
программы?
a. Диаграммы потока данных (DFD)
b. Диаграммы последовательности (Sequence Diagrams)
c. Диаграммы активностей (Activity Diagrams)
d. Графические редакторы кода

83
18) Какой инструмент позволяет автоматически определить и исправить
ошибки в программном коде?
a. Линтеры (статические анализаторы кода)
b. Дизассемблеры
c. Дебаггеры
d. Компиляторы
19) Что такое декомпиляция программы?
a. Процесс создания программы
b. Процесс анализа программного кода
c. Процесс преобразования машинного кода в исходный код
d. Процесс тестирования программы
20) Какой инструмент используется для анализа исходного кода программы
на наличие уязвимостей безопасности?
a. Линтеры (статические анализаторы кода)
b. Дебаггеры
c. Профилировщики
d. Дизассемблеры
21) Что такое метрики программного кода?
a. Инструменты для анализа производительности программы
b. Показатели, используемые для оценки качества и сложности кода
c. Инструменты для отладки программы
d. Инструменты для создания документации к программе
22) Какой инструмент используется для автоматического тестирования
программы?
a. Дебаггер

84
b. Профилировщик
c. Фреймворк для юнит-тестирования
d. Дизассемблер
23) Что такое динамический анализ программного кода?
a. Анализ программы на этапе компиляции
b. Анализ программы на этапе выполнения
c. Анализ машинного кода программы
d. Анализ документации к программе
24) Какой инструмент используется для профилирования программы и
определения ее узких мест?
a. Дебаггер
b. Профилировщик
c. Линтер (статический анализатор кода)
d. Дизассемблер
25) Что такое дизассемблирование программы?
a. Процесс преобразования исходного кода в машинный код
b. Процесс анализа программы на этапе выполнения
c. Процесс преобразования машинного кода в исходный код
d. Процесс создания программы
26) Что такое статический анализ программного кода?
a. Анализ программы на этапе выполнения
b. Анализ программы без запуска
c. Анализ программы на этапе компиляции
d. Анализ документации к программе

85
27) Какой инструмент используется для отладки программы и поиска
ошибок?
a. Линтер (статический анализатор кода)
b. Дебаггер
c. Профилировщик
d. Дизассемблер
28) Какие методы не используются для построения алгоритмов?
a. Математические моделирование
b. Экспертные системы
c. Машинное обучение
d. Сцинтилляционный метод
29) Какой инструмент не может использоваться для обратного
инжиниринга программ?
a. Дизассемблер
b. Профилировщик
c. Кронциркуль
d. Декомпилятор
30) Какие данные нельзя получить при использовании дизассемблеров?
a. Исходный код программы
b. Структуру программы
c. Алгоритм программы
d. Все вышеперечисленное

86
Таблица 2 – Варианты ответов
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
Раздел 1
1 d 2 a 3 d 4 b 5 d 6 a 7 d 8 d 9 a 10
c
11 d 12 c 13 d 14 a 15
a
16 b 17 b 18
a, b
19 a 20
a
21 a 22 a 23 a 24 d 25 b 26 d 27 c 28 d 29 d 30
d
Раздел 2
1 b 2 c 3 a 4 b 5
a
6 c 7 b 8 d 9 c 10 b 11 a 12 a 13 c 14 b 15
b
16 a 17 d 18 d 19 d 20
c
21 a 22 c 23 a 24 a 25
b
26 a 27 a 28 a 29 c 30
c
Раздел 3
1 b 2 a 3 a 4 b 5 a 6 d 7 d 8 d 9 b 10
c
11 c 12 d 13 d 14 c 15
a
16 b 17 d 18 c 19 d 20
a
21 d 22 d 23 d 24 a 25 c 26 c 27 d 28 a 29 a 30
d
Раздел 4
1 a 2 a 3 c 4 c 5
c
6 c 7 a 8 b 9 c 10
c
11 a 12 c 13 a 14 c 15
d
16 c 17 c 18 c 19 a 20
a
21 a 22 c 23 c 24 c 25
b
26 a 27 c 28 c 29 d 30
d

87
Продолжение таблицы 2
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
Раздел 5
1 d 2 b 3 d 4 a 5 a 6 d 7 d 8 b 9 d 10
a
11 d 12 d 13 d 14 a 15
d
16 c 17 d 18 a 19 c 20
a
21 b 22 c 23 b 24 b 25 c 26 b 27 b 28 d 29 c 30
d

88
Список использованных источников
1. СТО 02069024. 101−2015. Работы студенческие. Общие требования и
правила оформления. : Стандарт организации, 2015. – 89 с. [Электронный
ресурс]. Режим доступа: http://www.osu.ru/docs/official/standart/standart_101-
2015.pdf.
2. Рабочая программа дисциплины «С.1.Б.41.2 Анализ программных
реализаций». : утв. на заседании кафедры КБМОИС : ввод. В действие с 21.11.18.
– 7 с.
3. Электронные курсы ОГУ в системе обучения Moodle. Анализ
программных реализаций. [Электронный ресурс]. Режим доступа:
https://moodle.osu.ru/course/view.php?id=4926.
4. Хабр: Профилирование программ – статья. [Электронный ресурс].
Режим доступа: https://habr.com/ru/articles/586250/.
5. Хабр: Обфускация программ – статья. [Электронный ресурс]. Режим
доступа: https://habr.com/ru/articles/255871/.
6. HHRD.RU: Компьютерные сети. Часть I. Основы сетей передачи данных.
Глава 2. Сетевые приложения. Страница 13. [Электронный ресурс]. Режим
доступа: https://hhrd.ru/network/328.
7. Кучеренко, В. Ассемблер [Текст] : тонкости, хитрости и секреты
программирования / В. Кучеренко. – М. : Майор, 2001. – 160 с. – (Мой
компьютер). – Библиогр.: с. 156. – ISBN 5-901321-06-5.
8. Буйневич М.В, Израидов К.Е., Красов А.В. Защита программ и данных.
Часть 1:Способы анализа данных.Учебное пособие СПб ГУТ, Санкт-Петербург,
2020. [Электронный ресурс]. Режим доступа: https://e.lanbook.com/book/180081.
9. Касперски, К. Искусство дизассемблирования [Комплект] / К.
Касперски, Е. Рокко. - CПб. : БВХ-Петербург, 2008. - 896 с. : ил. + 1 электрон. опт.
диск (CD-ROM). - Предм. указ.: с. 875. - ISBN 978-5-9775-0082-1.

89
Приложение А
(рекомендуемое)
Типичные ошибки программиста
К типичным ошибкам программиста можно отнести:
− Переполнение буфера.
− Атаки через GUI.
− Отсутствие контроля типов параметров и их содержимого.
− Утечка информации через средства регистрации ошибок.
− Хранение паролей в теле программы.
− Применение криптографических алгоритмов собственной разработки.
− Передача конфиденциальной информации по открытому каналу.
Переполнение буфера является очень распространенным видом
уязвимости приложений и сводится к записи в некий буфер программы
информации, объем которой превышает размер буфера. Оно может
использоваться злоумышленником для:
− срыв стека. Осуществляется за счет переполнения буфера,
расположенного в стеке;
− несанкционированная модификация данных программы. Этот метод
основан на том, что при переполнении буфера запись информации происходит в
память, расположенную за правой границей буфера.
Пример переполнения буфера:
int _tmain(int argc, _TCHAR* argv[]) {
bool AuthComplete = false;
char Passwd[10];
char Login[10];
int Cnt = 0;
do {

90
printf(“Enter login:”); // Запрос имени пользователя
gets(&Login[0]);
printf(“Enter password:”); // Запрос пароля
gets(&Passwd[0]);
Cnt++; // Увеличение счетчика попыток
if (strcmp(&Login[0], “Admin”) == 0 && // Проверка имени и пароля
strcmp(&Passwd[0], “TopSecret”) == 0)
AuthComplete = true;
} while ((Cnt < 3) && !AuthComplete);
if (AuthComplete) printf(“OK !”);
Else printf(“Invalid UserName/Password”); }
Рисунок 31 – Стек примера после ввода первого образца данных
Рисунок 32 – Стек примера после взлома
Методика защиты:
− в ходе разработки проекта не применять буферы статического размера;
− отказаться от применения в программе «магических» размеров
различных массивов и буферов.
− максимально использовать возможности поиска ошибок, предлагаемые
компилятором.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
