выделить функцию из другой в IDA

Тема в разделе "WASM.BEGINNERS", создана пользователем angrylion, 26 фев 2012.

  1. angrylion

    angrylion New Member

    Публикаций:
    0
    Регистрация:
    1 май 2007
    Сообщения:
    10
    Дизассемблирую DLL, и IDA ошибочно обозначает многие функции, вызываемые инструкцией call, как function chunks вызывающей функции. Видимо, её смущает пролог типа mov edi, edi / push ebp / mov ebp, esp или то, что call сам находится в function chunk'е. Верно ли, что нет никакого способа выделить function chunk как функцию, не разрушая вызывающей функции (в которой может быть куча таких вызовов)?
     
  2. reversecode

    reversecode Guest

    Публикаций:
    0
    скрин шот давайте
    телепатироть не хочется
     
  3. angrylion

    angrylion New Member

    Публикаций:
    0
    Регистрация:
    1 май 2007
    Сообщения:
    10
  4. reversecode

    reversecode Guest

    Публикаций:
    0
    вторая фотка
    поднимитесь выше на адресс 7372D0AF
    и там где будет код(мне не видно)
    наберите
    E - set end proc
    и потом когда стек поднимится
    перейдите на адресс 7372D0B5
    и наберите P - set proc
    и должна быть функция
     
  5. angrylion

    angrylion New Member

    Публикаций:
    0
    Регистрация:
    1 май 2007
    Сообщения:
    10
    Выше конец другой неправильно распознанной как function chunk функции, вызываемой в свою очередь другой вызывающей. Кроме того, добавлю, что в таких чанках неактивны пункты меню Add Function Tail/Add Remove Tail/Create function, а диалог Edit function, естественно, предлагает редактировать вызывающую функцию.
    http://i.imgur.com/KiMMH.jpg
    EDIT: E не делает решительно ничего, хотя, казалось бы, должна менять конец той же функции, что указывается в диалоге Edit function, но нет.
     
  6. reversecode

    reversecode Guest

    Публикаций:
    0
    значит еще выше поднимайтесь
    и ищите на какой функции IDA не правильно определила стек
    и натянула одной функцией на все функции вниз

    алгоритм я вам дал выше
    E
    P
    итд
    толко нужно найти вверху самую первую функцию с которой пошла такая пляска

    дайте екзешник
     
  7. angrylion

    angrylion New Member

    Публикаций:
    0
    Регистрация:
    1 май 2007
    Сообщения:
    10
    Спасибо, понял алгоритм.
    Что касается E, то она у меня во всех функциях почему-то не работает, а вот через меню "Set function end" работает. Очевидно, эта проблема с Идой, а не с анализируемым файлом.