Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012- СИСПРОГ на МАСМ.doc
Скачиваний:
21
Добавлен:
09.11.2019
Размер:
553.47 Кб
Скачать

6.3.2Фрейм дампа памяти (области 9,10 и 11)

В данном фрейме также возможны установки точек остановки на чтение-запись-выполнение (через ПКМ), перемещение по адресам и т.п. В этом фрейме возможно различное представление данных. Через контекстное меню (ПКМ по фрейму дампа) можно задавать любой требуемый для выполнения текущей задачи вид дампа памяти. Дамп может быть представлен в виде HEX кодировки, в виде ASCII и UNICODE строк, в виде Short, Long, Float чисел или же может быть показан PE-заголовок (для этого достаточно перейти на адрес базы EXE-файла и выбрать ПКМ – Special – PE headers).

Удобной является так же и опция редактирования дампа (ПКМ – Binary – Edit). Для этого достаточно просто выделить мышкой необходимый фрагмент данных и задать нужные значения байтов.

6.3.3Фрейм регистров процессора (области 6, 7 и 8)

В данном фрейме представлены все регистры процессора. В стандартном виде тут находятся регистры общего назначения (РОН), регистр флагов, регистры математического сопроцессора (Floating Point Unit, FPU). Через ПКМ на фрейме регистров можно вместо показа регистров FPU переключаться на показ регистров MMX, 3DNow!-регистров или отладочных регистров DR0 – DR7.

Значения РОН (кроме регистра EIP) могут быть изменены на любом этапе отладки. Для этого нужно выполнить 2КМ на нужном регистре – появится окно модификации регистра. После закрытия этого окна регистр остается выделенным и ПКМ по фрейму вызывает контекстное меню, команды которого относятся к выделенному регистру. Там есть команды Increment (увеличить значение на 1), Decrement (уменьшить значение на 1), Zero (обнулить), Set to 1 (установить в 1). Опции Follow in Dump и Follow in Stack перемещают нас соответственно в фрейме дампа либо в фрейме стека на адрес, содержащийся в конкретном регистре.

В этом фрейме представлены и отдельные флаги (сигнальные биты) с именами C, P, A, Z, S, T, D, O. Когда говорят о бите, то присвоение ему значения 1 называют установкой (set), а присвоение значения 0 – сбросом (reset). 2КМ по значению любого флага меняет его состояние на противоположное. Это очень полезная возможность, если нужно, к примеру, изменить направление ветвления в отлаживаемой программе на команде JE. Поменять значение флага Z значительно проще, нежели менять в коде команду JE на JNE.

Отладчик OllyDbg помечает красным цветом значения регистров и флагов, которые в ходе выполнения последней машинной команды были изменены.

6.3.4Фрейм стека (области 12, 13 и 14)

Стек служит временным хранилищем данных, используемых во время работы программы. Практически все опции и настройки этого фрейма теснейшим образом связаны с процедурами, поэтому понимание их смысла, удобства и тщательно продуманной функциональности возможно только в случае, когда вы прочитали или прослушали на лекции раздел «процедуры в ассемблере».

Все рассматриваемые опции фрейма стека вызываются, как обычно, через ПКМ по фрейму.

Так, к примеру, опция ПКМ – Address – Absolute / Relative to Selections / Relative to EBP / Relative to ESP определяет адресацию в фрейме стека (абсолютные адреса / смещения относительно выбранного элемента стека / смещения относительно сохраненного значения регистра EBP / смещения относительно текущего значения указателя стека ESP).

Lock Stack – позволяет зафиксировать выбранный адрес в стеке (сделать его неперемещаемым за границы фрейма, т.е. автоскролл при изменении вершины стека не работает). Unlock Stack – обратная операция.

Операции Push DWORD / Pop DWORD позволяют поместить в стек и соответственно извлечь из него двойное слово. При вызове первой инструкции появляется окно, где нам предлагают ввести помещаемое значение.

Операции Go to ESP / Go to EBP позволяют переместиться нам на вершину стека (на которую указывает значение регистра ESP) или на дно стекового кадра параметров процедуры (указывает EBP).

Конечно же во всех фреймах доступна возможность копирования данных в буфер обмена, и, следовательно, последующего редактирования контента фреймов в каком-нибудь редакторе. Действия просты: выделяем мышью необходимый нам блок данных (кода) и далее выбираем Copy – To clipboard.

Данное введение в функции и возможности отладчика OllyDbg приведено лишь в объеме, достаточном для выполнения этой лабораторной работы. Реально функциональность отладчика еще шире, особенно в случае установки в него дополнительных плагинов. Их написано множество и обзор их возможностей выходит далеко за пределы данной лабораторной работы. По мере возникновения у вас практической потребности в выполнении неких «специфических» действий по отладке программ вы наверняка найдете в Интернете нужные плагины и освоите работу с ними.