по курсу «ОСЗР»
Выполнил: Зимин А.В.
Проверил: Тихомиров В.А.
Вариант: 4
Комсомольск-на-Амуре
Тема:
Цель:
Задача:
«Дисассемблеры и отладчики».
Изучить работу с некоторыми дисассемблерами и отладчиками.
1. Знакомство с отладчиком уровня ПРИЛОЖЕНИЯ.
Используя отладчик OllуDebugger пройти по программе, найти место, где происходит дешифровка пароля и расшифровать его, после чего снова запустить программу, ввести правильный пароль и получить подтверждение о правильности прохода через пароль.
2. Знакомство с дизассемблером.
Используя дизассемблер IDA, ознакомиться с методикой дизассемблирования Win приложений, дизассемблировать выданную программу, найти в тексте программы место проверки пароля.
Исправить ассемблерный код так, чтобы программа срабатывала при любом пароле, определить вид изменений в коде исполняемого файла. Внести изменения в код исполняемого файла любым HEX редактором.
3. Знакомство с отладчиком уровня ЯДРА.
Используя отладчик SoftIce пройти по программе, найти место, где происходит дешифровка пароля и расшифровать его, после чего снова запустить программу, ввести правильный пароль и получить подтверждение о правильности прохода через пароль.
Задание 1
Найдем место дешифровки пароля. Программа получает введенный пользователем пароль с помощью функции WinApi GetWindowTextA. Ищем в тексте программы вызов этой функции. На рис. 1 показано место получения и проверки пароля. Сначала выясняется длина введенного пользователем пароля, если она равна 5, то проверяется соответствие введенного пароля верному, если нет – выдается сообщение о неудаче. Символы верного пароля заносятся в регистр dl из адреса [ecx]. К каждому символу сначала применяется операция xor (xor dl,25h), а затем он сравнивается с соответствующим символом пароля, введенного пользователем. Если они не совпадают, выдается сообщение о неудаче.
Для дешифровки пароля в OllуDebugger поставим точку останова (F2) на строчке xor dl, 25. Перед этой строкой в программе символы верного пароля из адреса [ecx] заносятся в регистр dl. Запускаем программу (Debug - Run или F9). После остановки трассировки программы в окне регистров видим, на какую область памяти указывает ecx. Просматриваем эту область в дампе данных (выбираем Follow in Dump), видим коды символов пароля в 16-м виде (15 1С 10 13 10) (см. рис.1). Далее выполняем операцию xor этих кодов с числом 25h и по таблице кодировок находим соответствующие кодам символы (0 9 5 6 5).
Рис. 1. Работа в отладчике OllyDebugger
Запустим программу и введем найденный пароль (см. рис. 2).
Рис. 2. Проверка найденного пароля
Задание 2
Для дешифровки пароля в IDA поставим точку останова (F2) на строчке xor dl, 25. Перед этой строкой в программе символы верного пароля из адреса [ecx] заносятся в регистр dl. Запускаем программу (F9 или Dеbugger - Start Process). После остановки трассировки программы в окне регистров видим, на какую область памяти указывает ecx. Просматриваем эту область в дампе данных, видим коды символов пароля в 16-м виде (15 1С 10 13 10) (см. рис.3). Далее выполняем операцию xor этих кодов с числом 25h и по таблице кодировок находим соответствующие кодам символы (0 9 5 6 5).
Для того, чтобы обойти пароль предлагается заменить переход на сообщение о неудаче после сравнения правильного и соответствующего введенного символа пароля (jnz short loc_4012D5) на двойной оператор nop.
Изменения проводим с помощью Hex-редактора Hiew (cм. рис. 4).
Рис. 3. Работа в дизассемблере IDA
Рис. 4. Работа в Hex-редакторе Hiew
Теперь программа выдает сообщение об успехе при произвольном пароле (см. рис. 5).
Рис. 5. Работа программы при произв. пароле
Задание 3
Для дешифровки пароля в SoftIce поставим точку останова на строчке xor dl, 25. Возвращаемся к окну программы (Ctrl+D). Вводим любые 5 символолов и ENTER. После автоматического возвращения в среду SoftIce переходим в окно регистров. Жмем правой кнопкой мыши на ECX и выбираем Display. Так как ECX хранит адрес области с правильным паролем, то в окне дампа видим коды символов пароля в 16-м виде (15 1С 10 13 10) (см. рис.6). Далее выполняем операцию xor этих кодов с числом 25h и по таблице кодировок находим соответствующие кодам символы (0 9 5 6 5).
Рис. 6. Работа в отладчике SoftIce
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.