Дизассемблирую DLL, и IDA ошибочно обозначает многие функции, вызываемые инструкцией call, как function chunks вызывающей функции. Видимо, её смущает пролог типа mov edi, edi / push ebp / mov ebp, esp или то, что call сам находится в function chunk'е. Верно ли, что нет никакого способа выделить function chunk как функцию, не разрушая вызывающей функции (в которой может быть куча таких вызовов)?
вторая фотка поднимитесь выше на адресс 7372D0AF и там где будет код(мне не видно) наберите E - set end proc и потом когда стек поднимится перейдите на адресс 7372D0B5 и наберите P - set proc и должна быть функция
Выше конец другой неправильно распознанной как function chunk функции, вызываемой в свою очередь другой вызывающей. Кроме того, добавлю, что в таких чанках неактивны пункты меню Add Function Tail/Add Remove Tail/Create function, а диалог Edit function, естественно, предлагает редактировать вызывающую функцию. http://i.imgur.com/KiMMH.jpg EDIT: E не делает решительно ничего, хотя, казалось бы, должна менять конец той же функции, что указывается в диалоге Edit function, но нет.
значит еще выше поднимайтесь и ищите на какой функции IDA не правильно определила стек и натянула одной функцией на все функции вниз алгоритм я вам дал выше E P итд толко нужно найти вверху самую первую функцию с которой пошла такая пляска дайте екзешник
Спасибо, понял алгоритм. Что касается E, то она у меня во всех функциях почему-то не работает, а вот через меню "Set function end" работает. Очевидно, эта проблема с Идой, а не с анализируемым файлом.