FE23  LOOCH  DISASM

ДИЗАССЕМБЛЕР
ДЛЯ ИССЛЕДОВАНИЯ ПРОГРАММ

(empty)
Главная Загрузка Инструкция Карта сайта

 

ОБЗОРНЫЙ ЭКРАН


Содержание


1. Что такое обзорный экран

Общие слова о том, что это такое, уже были сказаны ранее. И мы не будем здесь повторяться. Посмотрите еще раз раздел про обзорный экран на странице   "Основные понятия".  

А здесь мы начнем с того, что сразу покажем на картинках, как выглядит в программе FE23 обзорный экран. Примеры того, что можно увидеть на обзорном экране в разные моменты работы с программой.

В программе FE23 информация выводится в разные окна, для каждой большой распечатки на экране монитора создается свое отдельное окно. Для обзорного экрана тоже создается свое окно. Но это окно имеет совсем не такой вид, как окна с распечатками.

Все примеры обзорного экрана, которые здесь приведены, были получены при выполнении упражнений, описанных на страницах:

  Быстрый старт. Урок первый  
  Быстрый старт. Урок второй  

Там рассказано про исследуемый файл и про решаемые задачи. Исследуется файл ( fe23.exe ), то есть, программа FE23 изучает самое себя.

Говоря более строго, для исследования был взят исполняемый файл ( fe23_10.exe ), версия 1.0, сборка 02.06.2010. Возможно, что файл ( fe23.exe ), которым Вы располагаете, отличается от указанного, тогда на подобных картинках, которые Вы самостоятельно получите, работая с программой FE23, будут видны другие адреса.


Рисунок 1

Так выглядит обзорный экран до начала дизасма.

Исследуемый файл уже приготовлен. Но первый проход дизасма еще не выполнялся. Пока не пройдено ни одного луча.

Пояснения к рисунку 1

На обзорном экране видны все секции исполняемого файла.

В секции "<.text>" (секция исполняемых кодов) показаны две области. Почти всю секцию занимает "Неизвестная область" (ее размер 115462 байта). А в конце секции есть маленькая "Область выравнивания". (Но на обзорном экране каждая область занимает ровно три текстовые строчки). Из этой неизвестной области в дальнейшем будут выделены области для каждой процедуры.

Адреса на обзорном экране показаны двумя способами. Самая левая колонка чисел - это индекс по файлу ( file_idx ). Правее - виртуальные адреса ( vir_addr ).

Темная горизонтальная полоса - это курсор обзорного экрана, который можно перемещать вверх и вниз. Курсор можно убирать, если он мешает.

Чтобы показать на этом рисунке все содержание обзорного экрана, окно с обзорным экраном было растянуто по высоте - на сколько это позволял экран монитора. Чтобы рисунок лучше вписывался на страницу броузера, это окно было по-возможности сужено по ширине.


Рисунок 2

Сделан первый проход дизасма для одной процедуры.
В процедуре 001 есть 14 лучей.

Пояснения к рисунку 2

Внутри прежней неизвестной области появилсь "Область процедуры 001" (размер 123 байта).

А неизвестных областей - теперь стало две (90672 байт и 24667 байт).

Внутри области процедуры 001 показаны 14 лучей.

Курсор на этой картинке убран, чтобы он не отвлекал внимание.


Рисунок 3

Та же самая ситуация, что и на предыдущем рисунке. Пока была пройдена дизасмом только процедура 001.

Пояснения к рисунку 3

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

О том, как управлять обзорным экраном, будет рассказано дальше на этой странице.


Рисунок 4

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

Пояснения к рисунку 4

На обзорном экране видно, что процедура 002 занимает три отдельных области - 67 байт, 6 байт, 56 байт. Между этими областями есть зазоры (неизвестные области) - в один байт и в два байта.

Всего в этой процедуре есть 21 луч. Но на рисунке видны не все лучи. Не видны только на рисунке, ведь на реальном обзорном экране можно продвинуть все изображение вверх и увидеть остальные лучи.


Рисунок 5

Отображена та же самая ситуация, что и на предыдущем рисунке, когда пройдены дизасмом процедуры 001 и 002.

Пояснения к рисунку 5

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

На этом рисунке видно, какой есть зазор между первой и второй процедурами (неизвестная область, 5 байт).


2. Структура информации на обзорном экране

Сначала мы объясним структуру информации, представляемой на обзорном экране. Без такого объяснения будет непонятно, как смотреть на обзорный экран и как управлять обзорным экраном.

Поэтому сформулируем несколько формальных правил:

  • Информация на обзорном экране состоит из отдельных так называемых "порций обзора".

  • Несколько порций обзора можно объединить в список.

  • Имеются списки нескольких уровней иерархии - первый (самый верхний), второй, третий, четвертый ...

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

Вот и вся теория. Нам пришлось ввести эти понятия - "порция обзора", "дочерний список", "родительская порция обзора", "уровни иерархии", так как без этих слов никак не получается продолжить объяснение.

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


3. Первый уровень - весь файл

Всего сейчас получается четыре уровня иерархии на обзорном экране.

Первый уровень, самый верхний - это весь файл целиком. На первом уровне список состоит только из одного элемента, то есть, одной порции обзора, которая так и называется "Весь иссл. файл целиком".

Средствами управления можно в обзорном экране оставить видимым только один первый уровень.

Вот как это будет выглядеть на обзорном экране:

Рисунок 6

А теперь мы уберем из этого рисунка все лишнее, чтобы не отвлекаться на внешние рамочки. Вот та же порция обзора первого уровня не на большом экране, а отдельно на маленьком рисунке:

Рисунок 7

Эта порция обзора имеет три текстовые строки. Другие порции обзора тоже, как правило, будут состоять из трех строк. Это стандартный вид для всех основных порций обзора.

В первой строке показаны начальный и конечный адреса порции и размер порции. Для размера даны шестнадцатеричное и десятичное значения.

Во второй строке есть полное текстовое название порции.

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

Очевидно, что размер порции для порции обзора "Весь иссл. файл целиком" это то же самое, что и размер исследуемого файла.


4. Второй уровень - секции файла

Второй уровень порций обзора - это уровень секций (секции PE файла). Вот так выглядит одна порция обзора для секции.

Рисунок 8

Здесь есть такие же три строки. Отличие от ранее рассмотренной порции обзора "Весь файл" только в том, что здесь в первой строке есть два значения для начального адреса секции, то есть, этот адрес записан двумя разными способами. Первое число - это индекс по файлу ( file_idx ), а второе число - это виртуальный адрес ( vir_addr ).

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

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

Рисунок 9

На картинке видно, что порция обзора первого уровня, то есть, порция "Весь иссл. файл целиком", разрезана на две части. Две строки этой порции оказались наверху, а третья строка, которая со словом "Конец" оказалась внизу. А между этими частями родительской порции обзора расположен весь дочерний список порций обзора второго уровня, то есть, все секции файла.

И теперь уже можно не объяснять, зачем так сделано, почему в стандартном представлении порций обзора в третьей строке еще раз повторен конечный адрес и название порции. Теперь это ясно и без объяснений.

Порции обзора первого и второго уровня отличаются по цвету фона.

Обратите внимание, что в арифметике адресов в качестве конечного адреса элемента берется начальный адрес следующего элемента.

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


На примере последнего рисунка (рис. 9), на котором представлены сразу два уровня порций обзора, первый и второй, уже можно было бы начать рассказывать про управление обзорныым экраном. Но все же мы сначала познакомимся еще с двумя уровнями.


5. Третий уровень - процедуры

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

На третьем уровне имеются такие порции обзора: "Область процедуры", "Неизвестная область", "Область выравнивания".

На примерах общего вида обзорного экрана, приведенных в самом начале этой страницы, мы уже видели на картинках эти порции обзора.

Эти порции обзора, каждая отдельно, выглядят так:

Рисунок 10





Для порций обзора "Область процедуры" в название порции добавляется порядковый номер процедуры.

Размер области выравнивания определяется по данным из таблицы секций PE заголовка. В области выравнивания все байты должны содержать нули. Если это не так, то это значит, что исследуемый файл поврежден. Возможно что умышленно поврежден (например, вирусом).

Если для исследуемого файла еще не начинался первый проход дизасма, то на обзорном экране будет видно, что почти вся секция исполняемых кодов занята неизвестной областью. И только в конце секции будет небольшая область выравнивания. ( См. рис. 1 ).

Рисунок 11 (повторение рисунка 1)

На этом рисунке видны порции обзора сразу трех уровней иерархии.

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

Порция обзора второго уровня "Секция <.text>" тоже разрезана на две части. И внутри нее расположен ее дочерний список из двух порций обзора третьего уровня.


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

Рисунок 12

На этом рисунке уже не помещаются сразу все порции обзора, какие есть в данный момент. Но дочерний список порций обзора третьего уровня пока еще виден полностью. Здесь этот список состоит из четырех порций обзора. Область кодов процедуры 001 расположена между двумя "неизвестными областями". Неизвестные области - это те области исполняемых кодов, где первый проход дизасма еще не делался.


По мере выполнения первого прохода дизасма все бОльшая часть кодов будет переходить из статуса "Неизвестная область" в статус "Область процедуры". ( См. рис. 5 ).

Рисунок 13 (повторение рисунка 5)

Здесь первый проход дизасма выполнен для двух процедур, 001 и 002. На обзорном экране видны четыре области процедур, одна для процедуры 001 и три для процедуры 002. Между этими областями есть маленькие зазоры - области кодов, которые не были пройдены дизасмом. На рисунке эти зазоры видны как "неизвестные области".


Примечание
Сейчас в программе FE23 сделано так. После того, как очередные лучи пройдены дизасмом, на обзорном экране добавляются порции обзора для областей процедур (третий уровень) и порции обзора для лучей (четвертый уровень). Но на показанных здесь рисунках порции обзора для лучей были "спрятаны" (с помощью средств управления обзорным экраном), так как про четвертый уровень мы еще не проходили.


6. Четвертый уровень - лучи

Порции обзора четвертого уровня иерархии - это лучи, они находятся внутри процедур. Никаких других порций обзора четвертого уровня пока не придумано. Таким образом, дочерний список из порций обзора четвертого уровня сейчас может появиться только внутри порций обзора "Область процедуры".

На обзорном экране порция обзора для луча занимает только одну строку. Никакого пояснительного текста в этой строке нет, есть только адрес луча, причем в двух видах - ( file_idx ) и ( vir_addr ).

Как выглядят лучи на обзорном экране уже было показано на рисунках в начале этой страницы. Мы еще раз повторим здесь те же самые рисунки. ( См. рис. 2). ( См. рис. 3).

Рисунок 14 (повторение рисунка 2)

На этом рисунке показаны строки порций обзора для 14-ти лучей, которые находятся внутри порции обзора "Область процедуры 001".

Для каждого луча тоже есть свой "дочерний список", это строки ассемблерного текста. Но мы не станем называть строки асм. текста "порциями обзора пятого уровня".

Рисунок 15 (повторение рисунка 3)

Здесь, с помощью средств управления, для первых трех лучей был раскрыт ассемблерный текст.

Далее как раз и пойдет речь про управление обзорным экраном.


7. Навигация по обзорному экрану

Разговор про управление обзорным экраном мы разделим на две части. Отдельно будем говорить про навигацию и про управление содержанием.

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

Для перемещения по обзорному экрану можно использовать вертикальную полоску прокрутки (скроллбар) или клавиши клавиатуры - клавиши со стрелками "вверх", "вниз", клавиши "Home", "End, "PageUp", "PageDown".

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

Курсор можно перемещать по строкам вверх и вниз с помощью клавиш со стрелками "вверх", "вниз".

Курсор можно убрать, чтобы он не мешал. Это делает клавиша "BackSpace". Если опять нажать на эту же клавишу, курсор снова появится. Когда курсор возвращается на экран, он всегда появляется на верхней видимой строке окна.

Примечание
В версии 1.0 программы FE23 на обзорном экране от мышки управляется только прокрутка (скроллбар). Никакое другое управление от мышки пока не сделано.


8. Управление содержанием обзорного экрана

Основная задача управления такая - убрать лишнее, чтобы лучше рассмотреть нужные подробности.

Например, оставить на обзорном экране лучи и асм. текст только для той процедуры, с которой в данный момент предполагается заниматься.

Сейчас для управления содержанием обзорного экрана задействованы всего две кнопки на клавиатуре. Про клавишу "BackSpace" - спрятать или показать полоску курсора, мы выше уже говорили.

Вторая кнопка - клавиша "Insert" - позволяет спрятать или показать дочерний список.

Эта операция выполняется так. Полоска курсора ставится на родительскую порцию обзора, Если теперь нажать клавишу "Insert", то дочерний список убирается или, наоборот, появляется.

По сути дела это все, что нужно знать про это управление, все предельно просто.


Но все же разберем конкретные примеры.

Когда по команде из главного меню создается окно обзорного экрана, то ассемблерный текст на нем еще не показан. Чтобы увидеть асм. текст для некоторого луча, нужно сделать так. Передвинуть полоску курсора на нужный луч, после этого нашать клавишу "Insert". Появится асм. текст этого луча.

Если еще раз нажать (не передвигая курсор), то асм. текст для данного луча спрячется.

Порция обзора типа "луч" состоит только из одной строки, а не из трех, поэтому тут не возникает вопроса, куда именно ставить курсор.


Разберем еще пример.

Мы хотим спрятать все лучи для данной процедуры. Точнее, для данной области процедуры. Ведь процедура может состоять из нескольких областей, а не только из одной области.

Порция обзора "Область процедуры" занимает на экране три строки. Курсор можно поставить на любую из этих трех строк. Либо на первую или вторую строку, это выше тех лучей, которые мы будем убирать с экрана. Либо на третью строку, на строку со словом "Конец", это ниже убираемых лучей. Затем нажимаем "Insert".

Если для лучей был открыт еще и асм. текст, то асм. текст тоже спрячется вместе с лучами.

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

Если теперь еще раз нажать "Insert", то все спрятанные лучи снова вернутся на экран. Но асм. текст для лучей на экран не вернется. Асм. текст нужно будет отдельно запрашивать, причем для каждого луча отдельно.

Вот так сейчас сделано. Есть планы, как можно сделать по-другому. Но пока это только планы.


И еще один пример.

Пусть у нас в данный момент на обзорном экране присутствуют порции обзора всех четырех уровней. Мы хотим оставить на экране только первый уровень, то есть, одну порцию обзора "Весь файл целиком".

В данном случае родительским элементом будет порция обзора "Весь файл целиком". Курсор нужно ставить на эту порцию обзора. Дочерним списком, который будет спрятан, является список из элементов второго уровня. Но вместе с ним будут спрятаны и все списки третьего и четвертого уровней. А также асм. текст, если он был на экране.

Выполняем.

Ставим курсор на порцию обзора "Весь файл целиком". Либо на первую или вторую строку, которые на самом верху обзорного экрана, либо на третью строку, она в самом конце, в самом низу.

Нажимаем клавишу "Insert". На обзорном экране остается только одна порция обзора "Весь файл целиком". Три строки этого элемента теперь собрались сместе. Полоска курсора находится на второй строке.

Если теперь еще раз нажать на "Insert", то появится дочерний список второго уровня - порции обзора для секций. Список третьего уровня (области процедур и другие области) нужно запрашивать отдельно. А затем отдельно запрашивать списки четвертого уровня (лучи).


Про обзорный экран рассказано все.




Все страницы инструкции

Основные понятия
Главное меню программы
Обзорный экран
Командный файл
Работа с проектами
 
Быстрый старт. Урок первый
Быстрый старт. Урок второй
Быстрый старт. Урок третий
 
Файлы, используемые в программе
Протокол работы и распечатки
Настройки дизасма и арифметика адресов



Главная Загрузка Инструкция Карта сайта


  Rambler's Top100
Copyright (C) FE23 Looch Disasm, 2010
File          - disa30.htm
File created  - 11 Apr 2010
Last modified - 01 Jul 2010
Hosted by uCoz