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

Настойки ida

Первые три байта хранят в себе слово ‘IDA’. Хотя это и не сообщается в документации, но нетрудно убедится, что это именно так и есть.

Message("%s%s\n",

GetShortPrm(0),

GetCharPrm(2)

);

IDA

Inf_version

Содержит, переменную типа Short хранящую версию базы IDA. Например:

Message("%x \n",

GetShortPrm(INF_VERSION)

);

22

Inf_procname

Хранит восьмисимвольное имя выбранного типа процессора дизассемблируемого текста. Для процессоров серии 80x86 предусмотрены следующие соответствия:

Intel 8086

8086

Intel 80286 real

80286r

Intel 80286 protected

80286p

Intel 80386 real

80386r

Intel 80386 protected

80386p

Intel 80486 real

80486r

Intel 80486 protected

80486p

Intel Pentium real with MMX

80586r

Intel Pentium protected with MMX

80586p

Intel Pentium Pro (P6) with MMX

80686p

Intel Pentium II

p262

AMD K6-2 with 3DNow!

K62p3

Intel Pentium III

p3ntel

Наиболее разумным (и быстрым) способом извлечения этого поля, вероятно, окажется чтение его с помощью GetLongPrm как показано ниже:

Message("%s%s \n",

GetLongPrm(INF_PROCNAME),

GetLongPrm(INF_PROCNAME+4)

);

p3ntel

ПРИМЕЧАНИЕ: Это поле может только считываться. Все попытки его модификации посредством SetXXXPrm будут проигнорированы.

Inf_lflags

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

LFLG_PC_FPP (0x1)

Декодировать инструкции с плавающей запятой для арифметического сопроцессора.

LFLG_PC_FLAT (0x2)

Плоская модель памяти

Обратите внимание, что изменение последнего параметра может повлечь за собой непредсказуемую работу дизассемблера и привести к неверному анализу исследуемого файла!

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

auto a;

a=GetCharPrm(INF_LFLAGS);

Message(“%x \n”,a);

if (a & LFLG_PC_FPP)

Message ("Decode FPP \n");

if (a & LFLG_PC_FLAT)

Message ("FLAT MODEL \n");

1

Decode FPP

Inf_demnames

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

DEMNAM_CMNT (0);

Отображать замангленные имена как комментарии. Например:

SetCharPrm(INF_DEMNAMES,DEMNAFM_CMNT);

.text:00403E79 ?sputc@streambuf@@QAEHH@Z proc near

; streambuf::sputc(int)

DEMNAM_NAME (1)

Заманглять в имена. Например:

SetCharPrm(INF_DEMNAMES,DEMNAFM_NAME);

.text:00403E79 public: int __thiscall streambuf::sputc(int) proc near

DEMNAM_NONE (2)

Не заманглять и представлять имена как есть.

SetCharPrm(INF_DEMNAMES,DEMNAFM_NONE);

.text:00403E79 ?sputc@streambuf@@QAEHH@Z proc near

При установке нового значения IDA автоматически начнет реанализ и внесет все изменения в дизассемблируемый текст.

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