Структура с мембером-union'ом в IDA.

Тема в разделе "WASM.RESEARCH", создана пользователем _Juicy, 9 фев 2005.

  1. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Для примера структура
    Код (Text):
    1. typedef struct _SRestriction
    2. {
    3.      ULONG     rt;
    4.      union
    5.      {
    6.           DWORD    resCompareProps;
    7.           DWORD             resAnd;
    8.           DWORD              resOr;
    9.           DWORD             resNot;
    10.           ... Это не совсем дворды, но для примера...
    11.      } res;
    12. } SRestriction;




    Обращение допустим к resAnd IDA изобразит как
    Код (Text):
    1. mov     dword ptr [ebp+srest.res], eax


    А хочется, чтобы
    Код (Text):
    1. mov     dword ptr [ebp+srest.res.resAnd], eax


    Можно ли тут что-то сделать?
     
  2. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    _Juicy

    Можно! Только придется выбирать самому "ручками" ;о). IDA вряд ли сможет сделать это за тебя. Вот, почитай:

    _http://www.datarescue.com/idatutorial/unions/index.htm
     
  3. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Сорри, одна важная оговорка - структура локальная.

    [ebp+srest.res] = [ebp-10h]

    Так что выбор operand type не проходит...
     
  4. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Для таких случаев создана комбинация Ctrl+Z, или Edit->Structures->Force zero offsets in structures. Или я ошибаюсь?
     
  5. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Не то, чтобы Force zero offsets in structures...

    Но Edit->Structs->Select Union Member работает отлично. Thnks, diamond.