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

Контрольные вопросы

  1. Что понимают под «обратным проектированием»?

  2. Какие средства помогают решить задачу обратного проектирования? Проклассифицируйте их.

  3. В чем преимущество отладчика SoftIce перед другими отладчиками подобного рода?

Пример оформления отчета

ЗАНЯТИЕ №

НАЗВАНИЕ ЗАНЯТИЯ

ВЫПОЛНИЛ: ст. гр. ….. ФИО

ЦЕЛЬ ЗАНЯТИЯ

  1. При первом запуске программы WinZip были установлены точки прерывания на следующие функции_______________

  2. При первой регистрации было задано имя пользователя ______ и пароль _______

  3. Процедура регистрации прервалась в модуле _______ на вызове API функции _____

  4. Вызов API функции ______ (CALL ______) осуществляется по адресу памяти _________

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

  6. Перед командой RET, находящейся по адресу 0167:00426940, содержимое регистра ESI = _____ , EBX = _______

  7. Содержимое памяти по адресу, указанному в регистре ESI, равно ________ , содержимое памяти по адресу, указанному в регистре EBX = ______

  8. Можно сделать вывод, что по адресу _______ находится ______, по адресу ______ находится _____.

  9. Вызов функции GetDlgItemTextA осуществляется по адресу ______

  10. В функцию GetDlgItemTextA передаются следующие аргументы ___=____, _____= _____………

  11. Адрес, по которому хранится идентификатор пользователя записывается в регистр ____

  12. После выхода из процедуры GetDlgItemTextA значение регистра ___ = _____

  13. Адрес вызова функции, читающей регистрационный номер = _____

  14. Адрес хранения регистрационного номера, введенного пользователем, хранится в регистре ______

  15. Значение регистра ____ при выходе из процедуры GetDlgItemTextA = _____

  16. Команда по адресу 0167:00408049 выполняет следующее действие _____________, команда по адресу 0167:00408053 выполняет следующее действие ______.

  17. Процедура, находящаяся по адресу 00407B4B, выполняет _______. При ответе руководствовались тем, что _________

  18. Команда по адресу 0167:00407B58 выполняет _________.

  19. В процедуру CALL 00407E31, вызываемую по адресу 0167:00407B83, передаются следующие аргументы _____ со следующими значениями _______. Был сделан вывод, что среди аргументов передается ______

  20. В процедуру (CALL 00407CC6), вызываемую по адресу 0167:00407C16, передаются следующие аргументы ________ со следующими значениями ________.

  21. На вход процедуры (CALL 00457900), вызываемой по адресу 0167:00407C2A, передаются следующие аргументы ________ со следующими значениями ___________, по соответствующим адресам располагается _____.

  22. Регистрационный код программы = _______

13. Статические методы изучения и нейтрализации защитных механизмов. Знакомство с техникой дизассемблирования программных продуктов

Цель занятия познакомиться на практике со статическими методами изучения и нейтрализации защитных механизмов, с техникой дизассемблирования программных продуктов на примере дизассемблера IDA PRO.

Теоретический материал

Одним из способов исследования программного обеспечения в условиях отсутствия исходных текстов является дизассемблирование — перевод двоичных кодов процессора в удобочитаемые мнемонические инструкции.

Качественное дизассемблирование объемного программного продукта является достаточно трудной задачей, так как ассемблирование - однонаправленный процесс с потерями, и полное автоматическое восстановление исходного текста, как правило, невозможно (например, практически невозможно автоматически отличить константы от адресов памяти – сегментов и смещений).

По типу реализации интерфейса взаимодействия с пользователем, существующие дизассемблеры можно разделить на две категории — автономные и интерактивные.

Автономные дизассемблеры требуют от пользователя задания всех указаний до начала дизассемблирования и не позволяют вмешиваться непосредственно в сам процесс. Если же конечный результат окажется неудовлетворительным, пользователь либо вручную правит полученный листинг, либо указывает дизассемблеру на его ошибки и повторяет всю процедуру вновь и вновь, порой десятки раз. Такой способ общения человека с дизассемблером непроизводителен и неудобен, но его легче запрограммировать.

Интерактивные дизассемблеры обладают развитым пользовательским интерфейсом, благодаря которому они приобретают значительную гибкость, позволяя человеку "вручную" управлять разбором программы, помогая автоматическому анализатору там, где ему самому не справиться — отличать адреса от констант, определять границы инструкций и т.д.

Примером автономного дизассемблера является SOURCER, а интерактивного — IDA Pro.

Интерактивный дизассемблер IDA Pro предназначен для дизассемблирования кода программы в мнемонические инструкции на языке ассемблера. Дизассемблер IDA Pro изначально проектировался как интерактивная среда, предназначенная для совместной работы с человеком. Преимуществом для злоумышленника интерактивных дизассемблеров является то, что их трудно обмануть каким-либо хитрым приемом, что возможно для дизассемблеров, работающих в автоматическом режиме.

В IDA Pro реализован удобный С-подобный внутренний язык написания скриптов, позволяющий реализовать многие полезные действия (например, осуществлять дешифровку зашифрованного участка кода).

IDA Pro поддерживает инструкции различных процессоров. Среди них – все версии процессоров INTEL, Motorola, Z80.

Автономные дизассемблеры типа SOURCER плохо справляются с анализом большого, порядка нескольких мегабайт, заковыристого файла, а с шифрованным кодом не справляется вообще. Интерактивные дизассемблеры позволяют решить эту проблему.

В IDA Pro возможно непосредственным образом в процессе интерактивного диалога указать, является ли код программы по заданному адресу действительно кодом, либо данными. Для этого необходимо поставить курсор на соответствующий адрес и дать команду “C” либо «D».

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