Анимация
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

ExtLinB(SegByName("seg000")+0x102,1,"; 2");

d) вызов функции ExtLinB для восстановления второй строки двух строк комментария

seg000:0100 mov ah, 9

seg000:0102 mov dx, offset aHello

seg000:0102 ; Строка 1

seg000:0102 ; 2

seg000:0102 ; Строка 3

seg000:0105 int 21h ;

e) результат - все строки вновь отображаются на экране

??? #Верстальщику - change table

аргумент

пояснения

линейный адрес элемента (бестипового байта)

удалямая строка комментария (от 0 до 500 включительно)

Родственные функции: DelExtLnB

Интерактивный аналог: "~Edit\Comments\Edit extra posterior lines"; <Shift-Ins>

void MakeVar(long ea)

Функция помечает элемент символом «звездочка», помещая его в начало строки. Повторный вызов функции не снимает пометку, и автору книги вообще не известно ни одного программного способа, позволяющего, эту пометку убрать. Интерактивно она снимается вызовом пункта «Mark item as variable» меню "~Edit\Other", который действует как триггер.

Пример использования:

seg000:0000 aHelloIdaPro db Hello, IDA Pro! ,0Dh,0Ah

a) исходные данные - требуется установить пометку

MakeVar(SegByName("seg000"));

b) вызов функции MakeVar для пометки

seg000:0000*aHelloIdaPro db Hello, IDA Pro! ,0Dh,0Ah

c) результат - пометка установлена

??? #Верстальщику - change table

аргумент пояснения

линейный адрес элемента (бестипового байта)

Родственные функции: нет

Интерактивный аналог: "~Edit\Other \Mark item as variable"

char Name(long ea)

Функция возвращает имя метки или функции, расположенной по линейному адресу ea, если с данным линейный адресом не связано ни одно имя, функция возвращает пустую



строку, сигнализируя об ошибке.

Функция выполняет проверку на наличие недопустимых символов в имени метки (функции) и при наличии таковых, заменяет их символом, заданным в поле "SubstChar конфигурационного файла <ida.cfg>. По умолчанию недопустимые символы заменяются знаком «прочерка». Перечень допустимых символов в именах метках определяется значением поля "NameChars" конфигурационного файла <ida.cfg> (см. таблицу 17)

Замечание: при отображении имен меток (функций) в окне дизассемблера, IDA Pro всегда заменяет запрещенные символы знаком «прочерка». Т.е. функция Name возвращает имена в том виде, в каком они отображаются на экране. Для получения подлинного имени метки (функции) следует воспользоваться функцией GetTrueName

платформа

перечень символов, допустимых в именах меток (функций)

"$?@"12

" 0123456789"

"ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz";

Java

"$ @?!"3

"0123456789<>"

"ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"

"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"14 "абвгдежзийклмнопрстуфхцчшщъыьэюя";

TMS320C6

"$ 0123456789"

"ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"

PowerPC

" 0123456789."

"ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"

Таблица 18 перечень символов, допустимых в именах меток Пример использования:

seg000:0000 aHelloldaPro db Hello, IDA Pro! ,0Dh,0Ah

a) исходные данные - требуется получить имя метки

Message(">%s\n", Name(SegByName("seg000")));

b) вызов функции Name для получения имени метки

> aHelloIdaPro

c) результат - имя метки получено

??? #Верстальщику - change table

аргумент

пояснения

линейный адрес

return

=return

пояснения

!=""

имя метки, в том виде, в котором оно отображено на экране

Служебные символы ассемблера

Символы, определенные только для специальных режимов Java-ассемблера Национальные (российские символы)



=="" I ошибка

Родственные функции: MakeName, GetTrueName

Интерактивный аналог: имя метки (функции) отображается справа от адреса

char GetTrueName(long ea)

Функция возвращает полное имя метки (функции), расположенной линейному адресу ea, не проверяя его на наличие недопустимых символов и не производя их автоматической замены (см. описание функции Name)

Пример использования:

seg000:0000 HelloIdaPro db Hello, IDA Pro! ,0Dh,0Ah

a) исходные данные - требуется получить подлинное имя меткм

Message(">%s\n", GetTrueName(SegByName("seg000")));

b) вызов функции GetTrueName для получения имени метки

>%HelloIdaPro

c) результат - подлинное имя метки получено (сравните его с отображаемым на

экране)

??? #Верстальщику - change table

аргумент

пояснения

линейный адрес

return

=return

пояснения

!=""

подлинное имя метки (функции)

==""

ошибка

Родственные функции: MakeName, Name Интерактивный аналог: нет

char Comment(long ea)

Функция возвращает строку постоянного комментария, расположенного по линейному адресу ea. Если с данным адресом не связан никакой комментарий, функция возвращает пустую строку, сигнализируя об ошибке.

Пример использования:

seg000:0000 mov ah, 9 ; Функция 0x9 - печать строки

a) исходные данные - требуется получить постоянный комментарий

Message(">%s\n",Comment(SegByName("seg000")));

b) вызов функции Comment для получения постоянного комментария

> Функция 0x9 c) результат

печать строки

??? #Верстальщику - change table аргумент

пояснения



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