Распознавание inline функций в IDA

Тема в разделе "WASM.RESEARCH", создана пользователем 7mm, 15 дек 2009.

  1. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Здравствуйте, уважаемые коллеги!

    Подскажите, как бы сделать так, чтобы IDA распознавала inline функции? Может какой плагин нужен, или скрипт?...
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    7mm
    это практически невозможно! ну вообще еще ко всему очевидно что это практически не возможно.
     
  3. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Ну я вообще-то вот что имел в виду. Например, есть шаблон кода:
    Код (Text):
    1. .text:0001A05F                 mov     eax, Tracers.Flink
    2. .text:0001A064                 cmp     eax, offset Tracers
    3. .text:0001A069                 jz      short loc_1A08E
    4. .text:0001A06B                 test    byte ptr [eax+20h], 8
    5. .text:0001A06F                 jz      short loc_1A08E
    6. .text:0001A071                 cmp     byte ptr [eax+1Dh], 3
    7. .text:0001A075                 jb      short loc_1A08E
    8. .text:0001A077                 mov     ecx, [edi+8]
    9. .text:0001A07A                 push    dword ptr [ecx]
    10. .text:0001A07C                 push    offset dword_47530
    11. .text:0001A081                 push    32h
    12. .text:0001A083                 push    dword ptr [eax+14h]
    13. .text:0001A086                 push    dword ptr [eax+10h]
    14. .text:0001A089                 call    WmiTraceMsg6
    15. .text:0001A08E loc_1A08E:
    Хотелось бы видеть вместо него что-нибудь вроде:
    Код (Text):
    1. .text:0001A05F                 call inline WmiTrace(8,3,...)
    2. .text:0001A08E loc_1A08E:
    Почему это невозможно? Ведь с memcpy и похожими функциями IDA это может проделывать?..
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    нужны сигнатуры под эти функции
     
  5. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Ну это понятно :) Есть ли какие-нибудь средства, позволяющие это сделать без геморроя? Или нужно использовать стандартные механизмы добавления сигнатур в базу IDA?
     
  6. Yerty

    Yerty New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2008
    Сообщения:
    107
    А inline функции это те что не вызываются а встраиваются в код вместо вызова, но на этапе разработки применяются как функции?

    Например: inline int a(int v) { return V + 'A'; } и прототип: inline int a(int v);
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    как делаются flirt-сигнатуры искать в гугле
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    тут должно быть
    http://www.wasm.ru/article.php?article=flex
     
  9. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Благодарю. Думал можно как-то проще это сделать... Но всё-равно, спасибо за наводку.
     
  10. Vam

    Vam New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2008
    Сообщения:
    149
    Сигнатуры, примененные к ассемблерному коду, здесь не помогут, т.к. в зависимости от места вызова инлайн функции, её код будет выглядеть поразному за счет оптимизации как кода, так и перменных функции.
     
  11. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Есть такое дело... :dntknw:
     
  12. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    7mm
    а HexRays тебе не нравится? надо чтоб обязательно остальное асм?
     
  13. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    вообще-то flirt-сигнатуры применяют в совершенно определенных случаях, например
    когда хотят обнаружить в коде функции из какой-то статической библиотеки использованной
    при линковке
     
  14. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    HexRays удобен. Но в коде достаточно часто используется инлайновая отладочная конструкция, это затрудняет чтение...
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    напишите IDC скрипт по распознаванию этого кода и "схлопыванию" его под "-"
     
  16. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Да, попробую...
     
  17. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Vam
    7mm
    Такой код врядл ли будет оптимизироваться по размеру, а вот регистры могут участвовать разные, это и нужно будет учитывать при написании скрипта.
     
  18. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Да, есть оптимизация... :dntknw:
     
  19. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    И регистры..
     
  20. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    7mm
    Интересно, а можете привести примерчики оптимизации по размеру?