FE23 LOOCH DISASMДИЗАССЕМБЛЕР
|
Главная | Загрузка | Инструкция | Карта сайта |
НАСТРОЙКИ ДИЗАСМАИ АРИФМЕТИКА АДРЕСОВСодержание
1. Настройки для первого прохода дизасмаСначала еще раз напомним, что в программе FE23 есть три вида дизассемблирования (дизасма):
Смотрите об этом на странице "Основные понятия". Перед запуском на выполнение первого прохода дизасма нужно убедиться, что все настройки дизасма установлены правильно. Установлены так, как это нужно пользователю именно сейчас для выполнения данной работы.
В главном меню есть команда
Четыре параметра, представленные в этой таблице, действуют только при первом проходе дизасма. При других видах дизасма они никак не влияют на работу дизассемблера.
Значения для этих параметров устанавливаются в диалоге,
который вызывается из главного меню по команде
А теперь приведем пример, как те же параметры можно задать в командном файле - для случая, когда все задание на первый проход дизасма формируется в командном файле. Эти несколько строк - фрагмент из реального командного файла.
Далее мы обсудим, как выбирать значения для этих настроек дизасма 2. Настройки безопасности дизасмаЕсть такая русская пословица - "Не зная броду не суйся в воду". А еще в русском языке известно и такое выражение - "Кинуться с головою в омут" ... Разные люди по-разному заходят в реку в незнакомом месте. Одни ступают медленно и осторожно, старательно ощупывая ногами дно, а другие готовы сразу опрометчиво прыгнуть головой вперед с высокого берега ... Приступая к исследованию неизвестного файла тоже можно поступить по-разному. Можно сразу, без разведки, запустить по максимуму первый проход дизасма. И потом гадать, правильно ли оно идет, или задача уже безнадежно зациклилась. И хорошо еще, если при этом не была включена печать ассемблерного текста ... Проблема в том, что при автоматическом выполнении первого прохода дизасма можно вместо исполняемых кодов угодить на какую-нибудь бессмыслицу, на такие байты, которые вовсе не являются инструкциями для процессора. В программе FE23 не предусмотрена аварийная кнопка СТОП, но есть "настройки безопасности", которые позволяют пользователю выбрать разумный режим работы. Это следующие два параметра:
Здесь мы назвали идентификаторы параметров, чтобы было легче упоминать их в тексте.
Параметр
Если для
Параметр
Начиная первый проход дизасма при исследовании незнакомого
файла, можно сначала пройти несколько лучей со включенной
печатью ассемблерного текста (асм. текст) и убедиться, что
получаемый асм. текст выглядит разумно. Затем отключить
печать асм. текста и увеличить значение
В больших программах общее количество лучей будет измеряться
сотнями или даже тысячами. И соответственно значение
Если для
Любознательные пользователи могут установить
Если установить нулевое значение 3. Флаги управления первым проходом дизасмаТеперь рассмотрим еще два параметра:
Эти параметры являются флагами (выключателями). Они могут принимать только два значения, ДА или НЕТ.
Флаг Ассемблерная команда CALL - это команда вызова процедуры. Когда при дизасме встречается команда CALL, то выполняются некоторые дополнительные действия. Во-первых, нужно зарегистрировать сам факт, что из данной процедуры вызывается другая процедура. Если процедура с таким начальным адресом еще не встречалась при дизасме, то эту новую процедуру нужно добавить в список процедур. Во-вторых, для новой процедуры нужно создать заявку на дизасм. Чтобы продолжить автоматическое выполнение первого прохода дизасма.
Однако, для пользователя не всегда будет удобна такая автоматика.
Возможно, что пользователь захочет пока отложить или вообще не делать
дизасм для новых процедур. Для этого ему достаточно установить
Несделанный первый проход дизасма можно осуществить позже.
В главном меню программы FE23 есть команда
Флаг
Обычно при первом проходе дизасма устанавливается
Но все же иногда пожет оказаться полезным сразу посмотреть на асм. текст уже при первом проходе дизасма. Поэтому и предусмотрена такая возможность. 4. Общие настройки для всех видов дизасмаЕсть только одна такая общая настройка - один параметр, который действует для всех видов дизасма.
5. Режим: 16 бит / 32 битаПри подготовке исследуемого файла к работе программа сама автоматически устанавливает режим "16 бит" или "32 бита". Программа делит все файлы на следующие четыре типа:
Если это файл типа "Win32", то устанавливается режим "32 бита", если файл типа "DOS", то режим "16 бит". Если в начале исследуемого файла нет сигнатуры MZ, то будет действовать режим по умолчанию - останется тот же режим, который был в программе FE23 в прошлый раз. После того, как исследуемый файл подготовлен к работе, в протокол выводятся основные сведения о файле. Среди этих сведений есть строчка про установленный режим "16 бит" или "32 бита". Вот пример такой печати в протоколе:
Пользователь может изменить установленный режим. Но сделать это можно только в том случае, если в списке лучей (в накопленных данных) еще нет ни одного луча, то есть, если еще не начинался первый проход дизасма для исследуемого файла. Установка режима 16/32 выполняется через командный файл. Имеются соответствующие команды, которые можно поместить в командный файл. Другого способа переключения реима 16/32 пока не сделано. Вот так выглядят эти команды в командном файле
6. Арифметика адресовВ программе FE23 используется три способа адресации по исследуемому файлу. Это те же способы адресации, какие применяются обычно для файлов типа "win32 PE".
Адрес ( RVA ) , относительный виртуальный адрес (relative virtual address).
Такие адреса испольуются в заголовке PE файла.
Например, в заголовке есть адрес Адрес ( vir_addr ) , виртуальный адрес. Исполняемая программа настроена на работу именно с этими адресами, в этих адресах исполняются инструкции (коды) процессора. Если в инструкции в явном виде задается адрес переменной или адрес передачи управления, то задается именно такой виртуальный адрес. Адрес ( file_idx ) , индекс по файлу. Это просто порядковые номера байтов в файле, начиная с нуля. Если на содержимое исполняемого файла смотреть через какой-нибудь просмотрщик или редактор, то обычно бывают подписаны именно такие адреса. Приведем какой-нибудь пример. Вот адрес точки входа для некоторой реальной исследуемой программы, три разных значения для трех разных способов адресации (числа шестнадцатеричные):
Теперь посмотрим, как связаны между собой эти три адреса и как переходить от одного способа адресации к другому.
Если заглянуть в заголовок PE файла (распечатку для заголовка легко
получить в помощью программы FE23), то можно найти в этом заголовке
значение для константы
Связь между адресами
Конечно пользователю не потребуется вручную пересчитывать адреса.
Вся эта арифметика (вместе с логикой) заложена в программу FE23.
Но пользователю при задании адреса нужно всегда четко знать,
какой адрес он задает - или 7. Диалог для задания адресовВ главном меню программы FE23 есть несколько команд, в которых требуется, чтобы пользователь задавал адрес. При выборе в меню такой команды появляется соответствующий диалог. Диалоги в разных случаях немного различаются, но общий принцип задания адреса остается одинаковым.
Вот так выглядит диалог задания адреса для команды
В этом диалоге есть три окошка для задания адреса. Над каждым окошком
подписано, какой именно адрес можно задать в этом окошке -
или Как только в доступном окошке будет изменено значение, в двух других окошках (недоступных) значения тоже изменятся. Из диалога можно выйти по кнопке "OK" только в том случае, когда задано корректное значение адреса для исследуемого файла. То есть, заданное значение принадлежит одной из секций PE файла. Выйти из диалога по кнопке "Cancel" можно всегда. Но это будет означать, что адрес не был задан, и запрошенная команда не будет выполняться. 8. Задание адреса в командном файлеЗдесь приведен пример, как задается адрес в командном файле. Показано три возможных способа задания одного и того же адреса.
Команда
Предшествующая команда
Если в командном файле есть несколько команд Все страницы инструкции |
|||||||||||
Главная | Загрузка | Инструкция | Карта сайта |