Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 [ 130 ] 131 132 133 134 135 136 137 138 139 140

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

Отключать его следуют только в тех случаях, когда результат работы автоматического анализатора не устаивает или вызывает «подвисание» дизассемблера. Такое часто случается с файлами, полученными с помощью 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);

.te>tt:0D4ID25B7 ; -

.te>tt:0D4ID25BE

.te>tt:0B4ID251ID

.te>:t:0D4ID2EllD loc

.text:0B4B251B

.te>tt:0B4B251B

.te>:t:0B4B2E12

ds:ott 0 4B2EEB[ecx«4]

.text:BB4025B7

.text:BB4025BE

.text:BB40251B

.text:BB40251B lo

.text:BB40251B

.text:BB40251B

.text:BB402512

.toxt:BB402519

.text:BB40251C

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);



.text:004D2507 ; -

text:004D250E .text:00402510

.text:00402510 loc 0 402510: .text:00402510 .text:00402510

align 4

.text:IDID4ID25D7 ; -

text:IDID4ID25DE

.text:IDID4ID2510 1ос Ш 4Ш2Б10:

.text:IDID4ID2510

.text:IDID4ID2510

align 4

INF SHOWPREF

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

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

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

Например:

.text:004023C0 .text:004023C0 .text:004023C0

dword 0 4023C0

dd 68AD123h, 468A0788h,0C102468Ah dd 3C68302h, 8303C783h,0CC7208F9h

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);

.text:l9Q4l924AC pop edi .text:lil04ID24flD leaue .text:iga4ig24nE retn

pop edi leaue

retn

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

INF ASMTYPE

Это однобайтовое поле хранит номер, начиная с нуля, задающий целевой ассемблер. Для PC всегда равно нулю, и указывает на «Generic for Intel 80x86» Пример:

Message("%x \n",GetCharPrm(INF ASMTYPE));



INF BASEADDR

Это длинное поле хранит базовый параграф программы Пример:

Message("%x \n",GetLongPrm(INF BASEADDR));

1000

INF XREFS

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


SW SEGXRF (0x01)

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

Интерактивно этим значением можно управлять «~ Options \ Cross-reference representation \ Display segments in xrefs»

SW SEGXRF == 1

SW SEGXRF == 0

SetLongPrm(INF XREF,SW SEGXRF);

SetLongPrm(INF XREF,!SW SEGXRF)

DATA XREF: .rdata:0 04 07 0C0o

DATA XREF: 004070C0o

SW XRFMRK (0x02)

Установка этого флага приводит к тому, что IDA уточняет тип перекрестной ссылки,- представляет ли источник собой код или данные.

Интерактивно этим значением можно управлять «~ Options \ Cross-reference representation \ Display xref type mark»

SW XRFMRK == 1

SW XRFMRK == 0

SetLongPrm(INF XREF,SW XRFMRK);

SetLongPrm(INF XREF,!SW XRFMRK)

DATA XREF: .rdata:0 04 07 0C0o

XREF: 004070C0o



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 [ 130 ] 131 132 133 134 135 136 137 138 139 140