Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
622231 / 622231 / очн 622231 / ПАЗИ 622231 / МУ_ПЗ_ПАЗИ.doc
Скачиваний:
74
Добавлен:
10.05.2015
Размер:
2.04 Mб
Скачать

Порядок выполнения работы

Задание 1. Познакомиться на примере с основными функциями отладчика SoftIce на примере отладки защитного механизма программы WinZip. Ответы на все вопросы внести в отчет (пример оформления отчета приведен в конце работы). Вопросы, ответы на которые необходимо внести в отчет, помечены значком верхнего регистра n.

1. Запустить программу WinZip и нажать кнопку "Enter Registration Code...", в результате чего откроется окно регистрации.

2. Запустить SoftIce и установить точки прерывания на вызов окна сообщений Win32. На какие функции Вы установили точки прерывания, сколько точек прерывания Вы установили1?

3. Ввести в окно регистрации произвольное имя и пароль и запустить регистрацию программы2. Для облегчения выполнения работы рекомендуется задать осмысленные имя и пароль. В каком модуле прервалось выполнение процедуры регистрации (имя модуля показано в окне SoftIce)3?

4. На вызове какой API - функции прервалось выполнение программы (MessageBoxA или MessageBoxIndirectA)3? Каков адрес памяти, по которому осуществлялся вызов API функции (по которому стоит команда CALL функция)4? Для ответа на данный вопрос Вам необходимо будет заново запустить команду регистрации. Используйте команду F12 для прогона подпрограммы API функции и получения адреса памяти ее вызова.

5. Каково содержимое регистров ESI при выходе из API-функции5?

6. После возврата в основную программу из API-функции, продолжить ее пошаговое выполнение до команды RET (адрес 0167:00426940).

7. Чему равно содержимое регистров ESI и EBX6? Чему равно содержимое памяти по адресам, хранящимся в регистрах ESI и EBX7. Запишите содержимое памяти (первые 10 байт)7. Сделайте выводы, относительно содержимого памяти, что там хранится8?

Задание 2. Нейтрализация регистрационной защиты архиватора WinZip 7.0. При выполнении задания используйте точки прерывания по чтению информации, введенной пользователем в диалоговом окне регистрации (GetDlgItemTextA).

1. Установить точку прерывания на вызов функции GetDlgItemTextA.

2. Выполнить процедуру регистрации WinZip.

3. По какому адресу вызывается функция GetDlgItemTextA9 (процедура CALL)? Какая информация передается в данную функцию (аргументы) и чему равны значения данных аргументов10? В какой регистр записывается адрес хранения идентификатора пользователя11? Каково значение данного регистра при выходе из процедуры чтения информации12? Вывести содержимое памяти по содержимому этого регистра на экран и удостовериться в правильности выдвинутой гипотезы.

4. Найти сразу же в программном коде (чуть ниже) место вызова аналогичной функции, предназначенной для чтения регистрационного номера. Каков адрес вызова данной функции13? В какой регистр записывается адрес хранения введенного регистрационного номера пользователя14? Каково значение данного регистра при выходе из процедуры чтения информации15? Вывести содержимое памяти по адресу, хранимом в данном регистре, на экран и удостовериться в правильности выдвинутой гипотезы.

5. В пошаговом режиме выполнить чтение идентификатора пользователя и регистрационного номера.

6. Что, по Вашему мнению, осуществляют команды по адресам 0167:00408049 и 0167:00408053 (с точки зрения WinZip)16? Промоделировать на компьютере ситуацию, когда эти условия не выполняются.

7. Проанализировав исполняемый код, следующий за чтением идентификатора пользователя и регистрационного номера, осуществить жесткий взлом программы. Выясните, остается ли регистрация действительной при последующих запусках WinZip? Объяснить данный факт.

7. Перейти к пошаговому исследованию процедуры по адресу 00407B4B (вызов CALL 00407B4B по адресу 0167:0040805С). Что, по Вашему мнению, осуществляет данная процедура17? При ответе руководствоваться командами, следующими за данным вызовом. Последующие шаги относятся к пошаговому исследованию данной процедуры.

8. Что осуществляется с точки зрения WinZip командой по адресу 0167:00407B5818? При ответе на вопрос руководствоваться предварительно полученной информацией (в том числе относительно адреса 47D928).

9. Какие аргументы передаются в процедуру (CALL 00407E31), вызываемую по адресу 0167:00407B83? Указать их значения и назначение19.

  1. Какая информация и в каких регистрах передается в процедуру (CALL 00407CC6), вызываемую по адресу 0167:00407C1620? Проанализировать код, следующий за вызовом данной процедуры (адреса памяти 0167:00407C1B – 0167:00407C2A).

  2. Какие аргументы подаются на вход процедуры (CALL 00457900), вызываемой по адресу 0167:00407C2A? Каковы значения данных аргументов, что находится по соответствующим адресам21? Сделать вывод о том, что делает данная процедура.

12. Можете ли Вы сказать регистрационный код программы? Каков он?22

14.Осуществить «мягкий» взлом программы и зарегистрировать WinZip.

Соседние файлы в папке ПАЗИ 622231