Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Inf_auto

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

Отключать его следуют только в тех случаях, когда результат работы автоматического анализатора не устаивает или вызывает «подвисание» дизассемблера. Такое часто случается с файлами, полученными с помощью ProcDump и подобных утилит.

Сделать это можно как интерактивно (~Options\ Background analysis\Analysis enabled), так и вызовом функции SetCharPrm(INF_AUTO,0);

Inf_border

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

С другой стороны, дополнительные линии уменьшают число значащих строк, умещающихся на дисплее, а так же приводит к излишнему перерасходу бумаги при выводе дизассемблированного текста на принтер, поэтому в этих случаях эту опцию следует отключить вызовом функции SetCharPrm(INF_BORDER,0) или интерактивно ~Options\ Text representation \ Display borders between data/code.

INF_BORDER == 1

INF_BORDER == 0

SetCharPrm(INF_BORDER,1);

SetCharPrm(INF_BORDER,0);

Inf_null

Это однобайтовое поле хранит флаг, управляющий генерацией пустых строк, вставляемых дизассемблером в различных местах для улучшения читабельности листинга. Однако в ряде случаев эту возможность следует отключать (например, при выводе текста на печать). Для этого следует воспользоваться вызовом SetCharPrm(INF_NULL,0) или сбросить флажок ~Options\ Text representation \ Display empty lines

INF_NULL == 1

INF_NULL == 0

SetCharPrm(INF_NULL,1);

SetCharPrm(INF_NULL,0);

Inf_showpref

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

Пример префикса: .text:004024AC pop edi

По умолчанию этот флаг установлен, и каждая линия предваряется префиксом. Многоточечные структуры (например, массивы) в каждой строке содержат адрес своего первого элемента.

Например:

.text:004023C0 dword_0_4023C0 dd 68AD123h, 468A0788h,0C102468Ah

.text:004023C0 dd 3C68302h, 8303C783h,0CC7208F9h

.text:004023C0 dd 3498D00h

При этом не зависимо от значения флага INF_SHOWPREF префиксы в ассемблерный листинг (*.asm файл) не попадают.

Если по какой-то причине генерацию префиксов необходимо отключить, то это можно сделать с помощью вызова функции SetCharPrm(INF_SHOWPREF,0) или интерактивно ~ Options\ Text representation \ Line prefixes

INF_SHOWPREF == 1

INF_SHOWPREF == 0

SetCharPrm(INF_SHOWPREF,1);

SetCharPrm(INF_SHOWPREF,0);

Inf_prefseg

Это однобайтовое поле содержит флаг, управляющий выводом имени сегмента в префиксе стоки. По умолчанию флаг установлен и вместо полного адреса выводится имя сегмента.

Если же возникнет необходимость видеть полный адрес, то этот флаг можно сбросить. Сделать это можно либо интерактивно «~ Options \ Text representation \ Use segment names», либо вызовом функции SetCharPrm(INF_PREFSEG,0)

При этом листинг будет выглядеть, как показано ниже:

INF_PREFSEG == 1

INF_PREFSEG == 0

SetCharPrm(INF_PREFSEG,1);

SetCharPrm(INF_PREFSEG,0);

.text:0040100F xor eax, eax

0000:0040100F xor eax, eax

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]