Как в IDC скрипте добавить к структуре поле, которое будет оффсетом? Или конвертировать? Вручную это делается Edit->Field Type->Offset->Offset (Data Segment) или Hot Key "O"
Код (Text): struc_id = GetStrucIdByName("имя_структуры"); AddStrucMember(struc_id, "имя_поля", смещение_в_структуре, FF_DWRD | FF_0OFF | FF_DATA, 0, 4, -1, 0, REF_OFF32); Если поле уже существует, SetMemberType аналогично
Ещё вопрос. Мне нужно скопировать поле из одной структуры в другую. Существует ли функция, обратная SetMemberType, что-то вроде GetMemberType? Или, может быть, существуют функции работающие напрямую с C типами. Судя по интерфейсу, такие должны быть.
GetMemberQty и GetMember[Name|Flag|Offset|Size] в цикле с GetStrucNextOff? Про C-типы не понял. Вопрос про LoadTil/Til2Idb? Или про "Parse c header file"?
Вопрос именно про IDA структуры. я хочу скопировать поле из одной IDA структуры в другую. Ну скажем у меня тип поля char * или WORD или MyStruct или void (__thiscall *MyFunc)(MyType *this, int iMyArg). Размер я могу узнать, а C тип, если это не структура, то как? Руками это можно сделать так: поставить курсор на поле структуры, затем "Y", появится формочка "Enter the type declaration". Туда можно ввести C тип. Если я введу туда тип, который больше по размеру, чем исходное поле, то соседнее поле смёрджится с изменяемым. Идеально было бы иметь функции string GetMemberType(int StructId, int MemberOffset) и SetMemberType(int StructId, int MemberOffset, string Type).