- •Основы исследование безопасности программного обеспечения
- •Оглавление
- •Обращение к читателю
- •Введение
- •С чего начать
- •Инструменты исследователя
- •Установка исследуемой программы
- •Типовая защита «Запрос пароля» или «Запрос ввода регистрационного номера»
- •Исследование типовой защиты в отладчике OllyDbg
- •Исследование типовой защиты в дизассемблере ida Pro
- •Типовая защита «Запрос пароля» или «Запрос ввода регистрационного номера» с шифрованием сообщения
- •Технологии защиты программного кода от исследования и отладки
- •Как не надо проектировать защиту программ
- •Как обмануть отладчик и дизассемблер
- •Приложение 1. Ассемблер в Windows
- •О стеке
- •Команды передачи управления
- •Литература для дополнительного изучения
- •Приложение 2. Отладчик OllyDbg
- •Откуда скачать программу
- •Установка и настройка программы
- •Дизассемблированный код (листинг)
- •Регистры
- •Наиболее полезные клавиши в OllyDbg
- •Подключение плагинов в OllyDbg
- •Встроенный язык ida Pro
- •Плагины ida Pro
- •Литература для дополнительного изучения
- •Задание для самостоятельного выполнения
- •Список используемой литературы
Встроенный язык ida Pro
С помощью встроенного языка программирования (упрощенный язык С) можно писать небольшие программы анализа дизассемблированного кода.
Существует два способа выполнения команд на языке IDC. Вызвать окно комбинацией клавиш Shift + F2. В окне можно набирать команды и после нажатия OK они выполнятся.
Рис. Окно встроенного языка IDC
Результат выполнения команды Message(«Engecon!»);
Рис. Результат выполнения команды IDC
Второй подход – более основательный, создание файлов с расширением idc и их запуск.
Рис. Меню выбора открытия файлов IDC
В папке idc есть несколько примеров подобных скриптов.
Рис. Файлы IDC
Плагины ida Pro
Благодаря плагинам, написанным на С++ функционал IDA Pro можно расширить.
Обзор плагинов для IDA Pro (можно скачать без регистрации): http://www.openrce.org/downloads/browse/IDA_Plugins
Одним из плагинов для IDA Pro является декомпилятор HexRays, который переводит двоичный код в «С-подобный».
Литература для дополнительного изучения
-
Ассемблер и дизассемблирование. Владислав Пирогов.
-
The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler, Chris Eagle http://www.idabook.com/
-
«Образ мышления – дизассемблер IDA», К.Касперски. За основу книги взята версия IDA Pro 4.01, а уже вышла версия 6.1. Много примеров скриптов на языке IDC.
-
Фундаментальные основы хакерства. Искусство дизассемблирование. К.Касперски.
Задание для самостоятельного выполнения
Лабораторную работу можно выполнять по два человека, но будет оцениваться вклад каждого.
Разработать консольное приложение на Visual C++ или на чистом ассемблере, запрашивающее строковый пароль. В случае правильно введенного пароля – выводится строка: «True password», иначе – строка «Wrong password». Ввод пароля ограничен тремя попытками.
Исходный текст с комментариями к программе необходимо приложить к отчету в качестве Приложения 1.
Первая версия приложения не должна содержать какой-либо защиты от отладчиков и дизассемблеров, т.е. пароль можно хранить в открытом виде.
Затем необходимо исследовать (Release-версию) программу в отладчике/дизассемблере и обойти механизм ввода пароля. Все шаги необходимо отразить в отчете в виде скриншотов (комментариев, листингов).
Затем необходимо реализовать несколько методов (например, через ассемблерные вставки или на чистом ассемблере) защиты программы от исследования с помощью отладчика/дизассемблера.
Исходный код с комментариями к обновленной программе (важны комментарии к добавленным средствам защиты) необходимо приложить к отчету в качестве Приложения 2.
Проверить на отладчике/дизассемблере работу внедренных средств защиты. В отчете необходимо отразить скиншоты с комментариями и дизассемблированный код (листинг).
Выводы по проделанной работе.
Дополнительные баллы можно получить, реализовав оконные приложения с несколькими видами защит от исследования.
Список используемой литературы
-
Реверсинг и защита программ от взлома. Александр Панов.
-
Ассемблер и дизассемблирование. Владислав Пирогов.
-
Введение в крэкинг с нуля, используя OllyDbg. Рикардо Нарваха, пер. Aquila, http://wasm.ru
-
Отладка без исходных текстов. К.Касперски. Скачать книгу: http://www.insidepro.com/kk/170/170r.rar
1 Упаковщики применяются для уменьшения размера исполняемого файла и для защиты программы от взлома. Упаковщик сжимает исполняемый код программы, ее ресурсы и данные, добавляет к программе свой код, который при запуске получает управление первым, распаковывает программу в памяти и передает управление распакованной программе.
2 http://sourceforge.net/projects/beye/
3 Cохранение копии содержимого оперативной памяти программы на диске или другом внешнем носителе
4 см. книгу Ассемблер и дизассемблирование. Владислав Пирогов. «Некоторые сложности в распознавании исполняемого кода»