Просмотр полной версии : Как найти процедуру и выдрать код
Привет всем! Есть программа, телефонный менеджер. В ней штук 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то-нибудь по-проще.;)
BlackSun
03.06.2008, 11:26
И в дополнение можно тебя расстроить, тупой копипаст не прокатит)) Рипнутый код придеццо обрабатывать напильником
neprovad
04.06.2008, 09:38
Напильником может послужить плагин для Ollydbg - Coderipper (поправьте меня если не так написал). В последний раз видел в подборке плагов с http://reversengineering.wordpress.com/ , но думаю можно и так найти отдельным файлом.
то, 4то посоветовал neprovad, TMG Ripper Studio, IDA + MASM = выдрать можно абсолютно все
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot