Дисассемблеры и отладчики. Изучение работы с некоторыми дисассемблерами и отладчиками.

Страницы работы

Содержание работы

Министерство образования и науки РФ

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

 «Комсомольский-на-Амуре Государственный Технический Университет»

Факультет компьютерных технологий

Кафедра МОП ЭВМ

ЛАБОРАТОРНАЯ РАБОТА 2

по курсу «ОСЗР»

Выполнил:                                                                                                         Зимин А.В.

Проверил:                                                                                                          Тихомиров В.А.

Вариант:                                                                                                            4

Комсомольск-на-Амуре

2007



Тема:

Цель:

Задача:
«Дисассемблеры  и  отладчики».

Изучить работу с некоторыми дисассемблерами  и  отладчиками.

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

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
213 Kb
Скачали:
0