Цель занятия:
1. Изучение возможностей, механизма и средств дизассемблирования программ, а также приемов и средств защиты от дизассемблирования.
2. Составление описания изученных средств зашиты от дизассемблирования.
3. Практическая проверка простейших приемов зашиты ПО от дизассемблирования.
Программа работы:
1. Используя справочную информацию по вопросим защиты от дизассемблирования, произвести анализ возможностей имеющихся средств защиты программ от дизассемблирования.
2. Составить перечень выявленных средств защиты от дизассемблирования и краткое описание выполняемых ими функций.
3. Произвести анализ функций изученных средств защиты программ от дизассемблирования, привести их краткое описание.
4. Подготовить отчет по работе и представить его преподавателю.
Содержание отчета:
1. Тема, цель, программа исследований.
2. Перечень существующих средств защиты от дизассемблирования.
3. Краткое описание порядка работы с защитными средствами программ (желательно в виде схемы алгоритма).
4. Выводы по проделанной работе.
Выполнение:
Порядок проведения анализа исходных текстов исследуемого комплекса:
- фиксация (контроль) исходного состояния;
- идентификация представленных исходных текстов;
- экспертиза и нормоконтроль документации;
- проведение статического анализа;
- проведение динамического анализа.
Контроль исходного состояния включает:
- фиксацию состояния исследуемого комплекса;
- контроль различий состояния различных версий исследуемого комплекса.
Дополнительные сервисы:
- выборочное суммирование файлов и фрагментов файлов;
- учет синтаксиса языка;
- сравнение пары файлов.
Проведение статического анализа включает:
- исследование модульной структуры комплекса;
- исследование логической структуры комплекса, построение блок-схем алгоритмов подпрограмм;
- анализ наличия (отсутствия) некорректных программных объектов;
- инспекцию переменных;
- построение маршрутов отработки подпрограмм и поиск «опасных» маршрутов;
- подготовку исследуемого комплекса для динамического тестирования.
Проведение динамического анализа включает:
- встраивание датчиков в исходные тексты программ;
- формирование наборов тестовых данных;
- тестирование и сбор трасс отработки комплекса;
- обработка и анализ трасс отработки комплекса.
Дизассемблирование (От англ. disassemble – разбирать, демонтировать) –это процесс или способ получения исходного текста программы на ассемблере из программы в машинных кодах. Полезен при определении степени оптимальности транслятора и при генерации кодов собственной программы. Позволяет понять алгоритм или метод построения программ, у которых отсутствуют исходные тексты. Существуют специальные программы дизассемблеры, которые выполняют этот процесс.
Одним из передовых продуктов для дизассемблирования программ является пакет программ от СS0 Computer Services – IDА (Interactive Disassembler). IDА не является автоматическим дизассемблером. Это означает, что IDА выполняет дизассемблирование лишь тех участков программного кода, на которые имеются явные ссылки. При этом IDА старается извлечь из кода максимум информации, не делая никаких излишних предположений. После завершения предварительного анализа программы, когда все обнаруженные явные ссылки исчерпаны, IDА останавливается и ждет вмешательства; просмотрев готовые участки текста, можно как бы подсказать ей, что нужно делать дальше. После каждого вмешательства снова запускается автоматический анализатор IDА, который на основе полученных сведений пытается продолжить дизассемблирование.
IDА является не только дизассемблером, но и одним из самых мощных средств исследования программ. Это возможно благодаря наличию развитой навигационной системы, позволяющей быстро перемещаться между различными точками программы, объектами и ссылками на них, отыскивать неявные ссылки и т.д. Исследование даже больших и сложных программ в IDА занимает в десятки и сотни раз меньше времени, чем путем просмотра текста, полученного обычным дизассемблером.
Средства защиты от дизассемблирования:
1. Отключение клавиатуры: когда взломщик запустит свою программу взлома под отладчиком, у него отключается клавиатура. Он может только перезагрузить компьютер и попробовать снова. Отключить клавиатуру можно с помощью «махинаций с портами (три способа)»:
in at,2lh
or al,000000l0b : irq одно клавиатурное Irq
out 21,al
in al,61h
or al,l0000000b; бит 7 – отключает клавиатуру;
out 61,al
mov al, OADh; отключение клавиатуры
out 61,al
2. Переход в нестандартный графический режим: экран исказится, и отладка станет невозможной.
3. Переполнение порта клавиатуры (безотказно действует
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.