IDA и структуры

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

  1. TretS

    TretS New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2005
    Сообщения:
    19
    Адрес:
    Bryansk
    Подскажите пожалуйста как после определения структуры т.е.



    Alt+Q



    получить содержимое поля в скрипте.



    auto addr, addr1;



    addr=ScreenEA();

    *** MakeStruct(addr,"TComponent_obj");

    addr1=MakeOffset(addr+0x08);

    ??? MakeStr(addr1, BADADDR);

    ??? MakeName(addr,GetZStr(addr1));
     
  2. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    Честно говоря, я не очень понял, чего ты хотел сделать в своем скрипте (зачем, например, тебе нужны 'MakeStr' и 'MakeName'? А 'MakeOffset' что за зверь??? 8o|).



    Если ты уже определил нужную тебе структуру в самой IDA (Alt-Q), то в скрипте ты сможешь получить смещение на любой ее элемент по его имени (и имени соответствующей структуры).


    Код (Text):
    1. auto addr, StructId, MembOff, value;
    2.  
    3.   StructId = GetStrucIdByName("_имя_структуры_");
    4.   MembOff = GetMemberOffset(StructId,"_имя_члена_структуры_");
    5.  
    6.   addr = ScreenEA();
    7.                        // тип члена структуры можно определить
    8.                        // функцией 'GetMemberFlag(StructId, MembOff)'
    9.                        // и использовать дОлжную команду, например
    10.   value = Dword(addr + MembOff);
    11.  
     
  3. TretS

    TretS New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2005
    Сообщения:
    19
    Адрес:
    Bryansk
    Большое спасибо!!



    Sergey_R



    MakeStr' и 'MakeName'? А 'MakeOffset' позаимтвованные разработки. Метод так называемого научного тыка