про тулзы, инклуды, структуры

Тема в разделе "WASM.RESEARCH", создана пользователем letopisec, 22 сен 2004.

  1. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    пробую реверсить драйвер для FLASH USB.

    Есть много стандартных структур и.т.д.



    Есть инициализация полей этих структур, примерно в таком виде: mov [eax+38h], ecx.



    То есть, нужно залезть в соотв хедер, и посчитать смещение

    для данного поля.



    А есть ли способы как-нить прикрутить хедеры к IDA, или

    может есть редактор какой, чтобы показывал смещения?



    Вообще каким должен быть подход?
     
  2. Avalonec

    Avalonec New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    111
    Адрес:
    Тула
    .const



    my_struktura struc

    header dd ?

    ...



    ends



    .data?



    m_s my_struktura <>



    .code



    mov [eax+m_s.header],ecx
     
  3. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    В иде есть парсер хидеров File->Load file->Parse C header file... Я, правда, никогда не пользовался. Какой-нить ntddk.h, скорее всего, не пропарсится. Выбери нужное и парсни снова. Что-то можно руками забить/дозабить. Потом встаешь на mov [eax+38h], ecx, топчешь T и получаешь mov [eax+DRIVER_OBJECT.MajorFunction], ecx. Угадал? ;)
     
  4. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Угадал, причём в яблочко. ntddk не парсится. Сделал по-другому: перешёл на закладку структуры -> создать структуру, кнопка "добавить стандартную" и к моему удивлению увидел, что уже DRIVER_OBJECT набит. Дальше всё как ты говорил:

    >топчешь T и получаешь mov [eax+DRIVER_OBJECT.MajorFunction], ecx.



    Теперь вот думаю, а как бы коды IRP_MJ_ сюда привязать, а то получается

    mov [eax+DRIVER_OBJECT.MajorFunction+8)], ecx

    что тоже не совсем удобно.
     
  5. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Так бы сразу и сказал, что у тя продвинутая ида. Все основные структуры там уже есть. С IRP_MJ_ руками придется. MajorFunction - это массив указателей на функции. Так что 8/sizeof(PVOID) = IRP_MJ_CLOSE.
     
  6. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Спасибо. Ручками всё уже сделал ;)