Дополнительный 1: IDA скриптовый язык IDC

1. IDA скрипт для открытия и использования:

 

 

IDA сценарий на двух языках: IDC (IDC, местный язык сценариев) и Python

 

2. IDC описывает язык

1. Переменный IDC: IDC представляет собой свободный язык, нет явного типа. 3 с использованием типа данных Целое число (МАР документа с помощью имени типа Long), строковые значения с плавающей точкой. Большая часть действия для целого числа и строки.

Поскольку строка рассматривается как родной тип данных IDC. Там нет необходимости отслеживать нужную строку для хранения.

IDC поддерживает локальные переменные, вы объявляете переменные перед использованием любой переменной.

Введение локальных переменных ключевых слов авто, можно инициализировать при объявлении.

Ключевое слово глобальных переменный ехЬегпа, или за ее пределы может быть определены в функции, но с начальным значением, не может быть объявлен, в первый раз, когда выделенное пространство, жизненный цикл и жизненный цикл сессии единогласно.

Например: авто адр, рег, вал;

 

2. Примечания: комментарии C-типа / ** / или //

 

3. Используйте «» точка с запятой заявление терминатор и как C

 

4. массив IDC C-стиль (IDA5.6 включен фрагмент), указатель (IDA5.6 начал поддерживать) или другие структуры и союзные сложные структуры данных, используя класс IDA5.6

 

5. выражение IDC

C IDC поддерживает почти все арифметические операторы, в том числе тройной оператор, но не операторы присваивания (например: + = * = >> = и т.п.). Все операции операции обрабатываются подписанные целые значения, процесс должны выполнить правильный символ операции сдвига (& 0x7fffffff)

Нет необходимости использовать IDC для копирования строки функции (C языка STRCPY, strdup), не требует функции конкатенации (C языка strcat), переменные последовательности с использованием указанного массива ломтика подобного.

Метод фрагментации: [Начальный индекс: Индекс Конец] По крайней мере один индекс с использованием процесса, аналогичного среза массива IDC строки.

Например: авто ул =»Строка порезать»;

   Автомобиль s1, s2, s3, s4;

   s1 = ул [7: 9] // к

   s2 = ул [: 6] // Строка

   s3 = ул [10:] // ломтика

   S4 = ул [5] // г

 

6. заявление IDC

Все во всех простых операторов IDC являются «;» конец. IDC является единственным коммутатор не поддерживает составную инструкцию C-стиле. Примечание IDC, составной оператор не поддерживается при использовании для цикла

Например: авто я;

       для (я = 0; г <10; г + = 2) {} // Нелегальная

       для (я = 0; г <10; I = I + 2) {} // 合法

IDC, не является строго ограниченной сферы вновь введенные переменные, эти переменные можно ссылаться во внешнем {}

Например:

если (1) {

Авто х;

х = 10;

} Еще {

       авто и;

       у = 3;

}

Сообщение ( «х =% d \ п», х);

Сообщение ( "у =% d \ п", у);

Результат: х = 10, у = 0;

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

 

7. функция IDC

IDC поддерживают только определенные пользователем функции в виде отдельной программы (.idc файл), диалоговое окно команды IDC не поддерживает.

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

Базовая структура функции:

статические my_f (х, у, г) {

       авто а, б, в;

}

IDC параметр функции прохождение два вида способов: средство переноса, которое переносит адрес (с использованием &)

Например:

Авто д = 0, г = 1, s = 2;

my_func (д, г, с);

my_func (д, & г, з);

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

Например:

статическая getFunc () {

       вернуться сообщение;

}

хочет статике (FUNC, Arg) {

       Функция (Arg);

}

Статический Основной () {

       Auto F = getFunc ();

       е ( «привет мир \ п»);

       искать (е, "Печать \ п");

}

 

       8. объекты IDC

       IDC определяет корневой класс с именем объекта, который поддерживает единичное наследование, когда все классы, производные от него, создавая новый класс, не использовать спецификатор доступа, все члены класса эффективны сотрудничать класс, объявление класса содержит только объявление функции члена класса. При создании элемента данных, создать оператор присваивания для присвоения элемента данных либо.

       Например:

       Класс ExampleClass {

              ExapmleClass (х, у) {

                     this.a = х;

                     this.b = у;

              }

              ~ ExampleClass () {}

              Foo (х) {

                     this.a = this.a + х;

              }

       }

      

       статические основные () {

              ExampleClass экс;

              Авто ех = ExampleClass (1,2);

             

              ex.foo (10);

              ex.z = "строка"

       }

 

       9. программа IDC

       IDC файлов основной структуры:

       #include <idc.idc>

       статические основные () {

             

       }

       IDC признала следующие С и обработки инструкций

       #include <файл>

       #define <имя макроса> [необязательные значения]

       #ifdef <имя>

       #else

       #endif

       #undef <имя>

 

       10. IDC Обработка ошибок

       Два типа ошибок:

1. Ошибка синтаксического анализа: синтаксический отчет IDC только во время первой ошибки.

2. Ошибка: редко, обработка исключений (попробуйте / поймать) может компенсировать дефекты не могут отладить IDC

      

       11. хранения данных IDC

IDC не поддерживает массивы в традиционном смысле, IDC является массивом объектов разреженного массива (т.е. заранее не выделять место для массива, но DAMA)

 

12. IDC горячие клавиши ассоциировать скрипт

Формат:

       #include <idc.idc>

       #include <my_amazing_script.idc>

       статические основные () {

              AddHotKey ( "г", "MyAmazingFunc");

       }

 

рекомендация

отwww.cnblogs.com/heixiang/p/10964135.html
рекомендация