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

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

Загрузить в IDA Pro выданный преподавателем файл ida_0x1.com и произвести его полное и качественные дизассемблирование с анализом исполняемого кода, руководствуясь при этом следующими рекомендациями.

  1. Запустить программу ida_0x1.com и познакомиться внешне с ее работой. Какие функции она выполняет?

  2. Загрузить в IDA Pro (исполняемый файл ldag.exe) файл ida_0x1.com и дизассемблировать его как 16-битный код.

  3. Если по умолчанию IDA принял начальные инструкции как данные, не дизассемблировав их, то указать ему, что данные являются командными инструкциями (выделить соответствующую команду и дать команду «С»).

  4. По какому адресу выполняется переход с адреса seg000:0003? Добавить перекрестную ссылку, указав дизассемблеру, куда делается переход с адреса 0003. (Команда View -> Open Subviews -> Cross references). Произвел ли IDA после этого дальнейший анализ кода?

  5. Произвести анализ кода по адресам seg000:0006 – seg000:0012. Проинтерпретировать общий смысл данного участка кода. В чем его функции?

  6. Что делает цикл, расположенный по адресам seg000:000C – seg000:0010? Сколько раз он повторяется?

  7. Что представляет из себя слово, расположенное по адресу 0014? Дайте ему осмысленное название (команда «N» и определите его размер как двухбайтное слово (щелкните по нему правой клавишей мыши, задайте соответствующий тип данных)). Вычислите и определите, по какому адресу осуществляется переход с адреса seg000:0012.

  8. Добавить перекрестную ссылку, указав дизассемблеру, куда делается переход с адреса 0012.

  9. Исследуете код программы, с того адреса, на который делается переход с адреса 0012. В чем функции данного блока? Подробно прокомментируйте каждую инструкцию и ее целевую функцию в общей структуре блока.

  10. В чем заключаются функции последовательного выполнения инструкций CALL $+3 и pop CX? Что в результате оказывается в содержимом CX?

  11. Какое значение окажется в регистре SI по адресу 11A? Почему?

  12. Что выполняет команда rep movsb, расположенная по адресу 121?

  13. Куда выполняется переход с адреса 123? Почему?

Произвести дешифровку и исследование зашифрованного кода программы. Для дешифровки кода воспользоваться возможностью написания скриптов в IDA Pro. Для написания скрипта, дешифрующего код, воспользоваться командой FILE -> IDC Command.

  1. В чем заключается алгоритм дешифровки? Записать и прокомментировать его словесно. Для ответа на этот вопрос проанализировать алгоритм дешифровки, исследованный Вами ранее.

  2. Написать скрипт, дешифрующий код программы с адреса 16 по 115. Для этого воспользоваться следующими командами языка скриптов IDA, выполняемых в цикле, -

PatchByte([Сегмент, Смещение], Значение); - заменить значение, находящееся по адресу [Сегмент, Смещение] на Значение.

Byte ([Сегмент, Смещение]) – получить значение по адресу [Сегмент, Смещение].

^ - XOR

FOR(Начальное условие, конечное условие, изменение)

Для определения счетчика цикла используйте, например, команду auto a;

Скрипт дешифровки может быть записан, например, следующим образом:

auto a;

for (a=0x16;a<116;a++) PatchByte([0,a],Byte([0,a])^0x66);

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

  2. Подытожить анализ программы. Что представляет собой данная программа, что она реализует, каким образом защищена?

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