АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Лабораторная работа №1

Прочитайте:
  1. I. Индивидуальная работа
  2. I. Медицинские осмотры работников, занятых на вредных работах и на работах с вредными и опасными производственными факторами
  3. II. Индивидуальная работа
  4. II. Индивидуальная работа.
  5. II. Общие требования к курсовым работам
  6. II. Самостоятельная работа
  7. II. Самостоятельная работа
  8. II. Самостоятельная работа
  9. II. Самостоятельная работа
  10. II. Самостоятельная работа

 

Цель работы:

1. Изучить этапы разработки программы на языке ассемблера;

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

 

1. Разработка программы на языке ассемблера состоит из трех этапов:

а) разработка алгоритма программы и запись его на языке ассемблера;

б) трансляция исходного текста в машинный код и компоновка;

в) отладка программы.

Текст программы на языке ассемблера может быть набран в любом текстовом редакторе.

Важно использовать формат файла «.TXT» или подобный ему, без специального форматирования. Нельзя использовать форматы «.DOC» или «.RTF». Предпочтительно набирать текст программы во встроенных редакторах NC, FAR, Total Commander и пр. Файл должен быть сохранен с расширением «.ASM».

В листинге 1 приведен исходный текст программы с комментариями. Наберите программу в редакторе и сохраните ее под именем lab01_1.asm в C:\WORK.

Листинг 1.

 

Транслируйте программу командой ml /c /coff lab01_1.asm. Если текст программы набран правильно, вы увидите примерно следующее сообщение:

 

Microsoft (R) Macro Assembler Version 6.14.8444

Copyright (C) Microsoft Corp 1981-1997.

All rights reserved.

 

Assembling: lab01_1.asm

 

Если в программе есть ошибки, они будут указаны в формате «имя_файла.asm(номер_строки): номер_ошибки: Описание_ошибки».

В результате работы ассемблера будет получен объектный файл lab01_1.obj. Для того чтобы получить исполняемый файл нужно использовать компоновщик link. Результатом работы компоновщика является создание исполняемого файла с расширением «.EXE» или «.COM». Для создания исполняемого файла выполните команду «link /SUBSYSTEM:CONSOLE lab01_1.ob». Вы увидите примерно следующее сообщение:

 

Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998.

All rights reserved.

 

В каталоге появится файл lab01_1.exe. Запустите полученный исполняемый файл командой lab01_1. Если все сделано правильно, на экране ничего не будет отображено и вы снова увидите приглашение командной строки.

 

2. Для отладки программы будет использоваться отладчик OllyDbg. Загрузите программу в отладчик командой ollydbg lab01_1.

1 - окно с исходной программой в дизассемблированном виде. Пошаговую отладку можно производить прямо в этом окне; строка с текущей командой подсвечивается;

2 - окно регистров микропроцессора, отражающего текущее содержимое регистров. Обратите внимание на регистр флагов (сверху вниз под регистрами общего назначения);

3 - окно дампа оперативной памяти, отражающее содержимое области памяти по адресу, который формируется из компонентов, указанных в левой части окна. В окне можно увидеть содержимое произвольной области памяти, а также выбрать тип отображения содержимого памяти;

4 - окно стека, отражающего содержимое памяти, выделенной для стека. Адрес области стека определяется содержимым регистров SS и ESP.

 

 

 

Для пошагового выполнения программы используйте клавишу «F8». Если в программе встречаются команды перехода в процедуры или прерывания и нужно проследить их выполнение по шагам, используется клавиша «F7». В нашем случае удобнее использовать «F8».

Для консольного приложения сразу создается окно, в котором вы сможете увидеть результаты работы (если используется вывод) или ввести данные. Выполните программу в пошаговом режиме и убедитесь в правильности ее работы (проконтролировать по состоянию регистров).

Наберите программу из листинга 2 и сохраните ее под именем lab01_2.asm в C:\WORK.

 

Листинг 2

.386.model flat,stdcall option casemap:none include c:\windows\include\kernel32.inc includelib c:\windows\lib\kernel32.lib.data stdout dd? msg db "Hello, world!",0dh,0ah cWritten dd?.code start: invoke GetStdHandle, -11; получаем дескриптор в eax mov stdout,eax; сохраняем дескриптор в stdout invoke WriteConsoleA, stdout, ADDR msg,\; символ\ можно использовать для переноса строки sizeof msg, ADDR cWritten, 0; выводим строку на экран invoke ExitProcess, 0 end start

 

Создайте исполняемый файл и загрузите его в отладчик. Выполните программу в отладчике. Вернитесь к началу, выполнив сброс (Ctrl+F2).

Выполните программу в пошаговом режиме.

 

Задание.

1. Проанализируйте принцип работы программы.

2. Прокомментируйте каждую строку листинга 2.

3. Отчет сохраните в формате «.DOC»


Дата добавления: 2015-05-19 | Просмотры: 548 | Нарушение авторских прав







При использовании материала ссылка на сайт medlec.org обязательна! (0.004 сек.)