|
|
КОМАНДНЫЙ ФАЙЛ
Эта страница инструкции еще находится в разработке
Страница еще не приготовлена полностью. Это укороченный
предварительный вариант инструкции.
Но все основные сведения,
нужные для работы с командным файлом, здесь есть.
Общий список команд
Здесь перечислены команды, которые могут применяться
в командном файле (ком. файл). И дается краткое пояснение
по каждой команде.
exam_file - имя исследуемого файла. Устанавливается дежурное имя
и выполняется подготовка исследуемого файла. Эта команда
в ком. файле может быть только первой командой.
use - какой адрес задается. Аргументом является слово,
одно из трех - "RVA", "vir_addr", "file_idx".
Эта команда переключает способ адресации.
Она должна встретиться в ком. файле раньше тех команд,
в которых задается адрес. Сама эта команда никакую работу
не выполняет.
start_ep - стартовать первый проход дизасма, начиная с точки входа.
entry_point - то же самое, что и предыдущая команда
(другой вариант командного слова).
start_proc - стартовать первый проход дизасма для процедуры.
Аргумент задает адрес процедуры.
В ком. файле в любом месте, но раньше данной команды, должна
быть помещена команда "use", которая задает способ адресации.
Команда "start_proc" работает точно также, как команда "start_addr".
start_cont - стартовать первый проход дизасма.
Продолжить дизасм для тех заявок, которые еще не были выполнены.
Если в список невыполненных заявок пустой, то дизасм не начинается.
start_addr - стартовать первый проход дизасма,
начиная с указанного адреса.
В ком. файле в любом месте, но раньше данной команды, должна
быть помещена команда "use", которая задает способ адресации.
Команда "start_addr" работает точно также, как команда "start_proc".
looch_size - предельный размер луча.
Команда задает значение для соответствующего параметра дизасма.
looch_nums - предельное количество лучей.
Команда задает значение для соответствующего параметра дизасма.
do_calls - создавать заявки для CALL. Команда устанавливает
в полжение "ДА" соответствующий флаг - параметр дизасма.
no_calls - не создавать заявки для CALL. Команда устанавливает
в полжение "НЕТ" соответствующий флаг - параметр дизасма.
do_asmtext - печатать ассемблерный текст. Команда устанавливает
в полжение "ДА" соответствующий флаг - параметр дизасма.
no_asmtext - не печатать ассемблерный текст. Команда устанавливает
в полжение "НЕТ" соответствующий флаг - параметр дизасма.
solid_size - размер участка для сплошного дизасма.
Команда задает значение для соответствующего параметра дизасма.
Эта команда уже стала практически ненужной. Но пока она еще оставлена
среди команд ком. файла.
mode_32_bit - установить для дизасма режим 32 бита.
Команда разрешена только в том случае, когда еще не пройдено
дизасмом ни одного луча.
mode_16_bit - установить для дизасма режим 16 бит.
Команда разрешена только в том случае, когда еще не пройдено
дизасмом ни одного луча.
time_mark - отметить время. Данная команда позволяет измерить
время выполнения первого прохода дизасма. По этой команде
в протоколе печатается значение текущего времени. Кроме того
вычисляется, сколько прошло секунд после предыдущей такой отметки.
Формат записи команд
Командный файл - это простой текстовый ( ASCII ) файл.
Один символ занимает один байт.
Каждая команда записывается в отдельной строке.
Командная строка начинается с трех символов ( .z. ),
то есть (точка), (малая латинская буква "z"), (точка).
Строки командного файла, которые начинаются не с символов
( .z. ), считаются комментариями.
В нижеследующей таблице показано, у каких команд должны быть аргументы
и какие типы этих аргументов. Разделителями служат пробелы.
Обозначения в таблице:
- (txt) - текстовое слово
- (hex) - шестнадцатеричное число (адрес)
- (dec) - десятичное число
Формат записи команд
.z. exam_file (txt)
.z. use (txt)
.z. start_ep
.z. entry_point
.z. start_proc (hex)
.z. start_cont
.z. start_addr (hex)
.z. looch_size (dec)
.z. looch_nums (dec)
.z. do_calls
.z. no_calls
.z. do_asmtext
.z. no_asmtext
.z. solid_size
.z. mode_32_bit
.z. mode_16_bit
.z. time_mark
|
Пример командного файла
Это строки были взяты из реального ком. файла. Немного почищено,
но не все. Некоторый "мусор", оставшийся от реальной работы,
был специально оставлен.
cmd_08.cmd 07.06.2010
------------------------------------------------------------
H:/FE/C/23/cmd_08.cmd
------------------------------------------------------------
NOTEPAD.EXE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.z.
.z. exam_file C:\WINNT\system32\notepad.exe
.z. time_mark
.z.
.z.
.z. looch_size 99999
.z. looch_nums 2
.z. do_calls
//.z. no_calls
.z. no_asmtext
.z.
//.z. entry_point
.z. time_mark
.z.
Для прохода всех лучей (что уже найдено)
.z.
.z. looch_size 1024
.z. looch_nums 451 // ровно столько, чтобы пройти до конца
.z. do_calls
.z. no_asmtext
.z.
.z. entry_point
.z.
.z. looch_nums 543
.z.
.z. use vir_addr
.z. start_proc 0100248F // это оконная процедура
.z.
.z. time_mark
.z.
|
Значения 451 и 543 для параметра ( looch_nums )
здесь стоят ровно такие, какие были нужны чтобы пройти дизасм до конца,
ни больше, ни меньше. Просто было интересно найти эти
значения. Понятно, что сначала стояло значение с запасом - 999.
Все страницы инструкции
Основные понятия
Главное меню программы
Обзорный экран
Командный файл
Работа с проектами
Быстрый старт. Урок первый
Быстрый старт. Урок второй
Быстрый старт. Урок третий
Файлы, используемые в программе
Протокол работы и распечатки
Настройки дизасма и арифметика адресов
|
|