Надо найти процедуру и выдрать код Привет всем! Есть программа, телефонный менеджер. В ней штук 13 всяких функций (резервное копирование, синхронизация, создание фоновых рисунков, просмотр мультимедии...) Мне надо выдрать одну функцию. С чего начать? Как найти место откуда она начинает выполняться? Заранее спасибо.
//исходим из того, что программа не запакована Допустим, то, 4то(ProTeuS, сорри ) ты называешь функцией, это код, выполняющийся по нажатию кнопки или пункта меню. Тогда в программе этот код выполняется в основной оконной процедуре при wParam=WM_COMMAND и lParam=ID этой кнопки или меню(id кнопки или айтема меню можно посмотреть в ресурсах Restorator'ом, ResHack'ом и т.п., если ре4ь не идёт о делфе) Зна4ит твои действия - дойти в отлад4ике до создания окна (либо вру4ную, либо поставив бряк на CreateWindowEx, DialogBoxParam, DialogBoxIndirectParam), посмотреть, 4то передаётся им в параметре wndproc, и посмотреть на код по этому адресу. Там находишь (в OllyDbg это после анализа написано в комментарии) сравнение с WM_COMMAND, внутри кода обработки WM_COMMAND находишь сравнение с ID тебя интересующим. Вот после него и идёт обработка нажатия на айтем. PS Это 4исто формально для общего слу4ая, в конкретных слу4аях можно придумать 4то-нибудь по-проще.
И в дополнение можно тебя расстроить, тупой копипаст не прокатит)) Рипнутый код придеццо обрабатывать напильником
Напильником может послужить плагин для Ollydbg - Coderipper (поправьте меня если не так написал). В последний раз видел в подборке плагов с http://reversengineering.wordpress.com/ , но думаю можно и так найти отдельным файлом.