Реверс инженеринг
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Реверс инженеринг - 2009-04-27 05:20:55.900000
|
|
|
tekton
Сообщений: 43
Оценки: 0
Присоединился: 2008-01-01 22:14:35.083333
|
Привет всем!!! Такакя проблема! Мне надо продублировать кнопку из одного диалогового окна во второе окно! В Ресторатаре скопировал строчку скрипта кнопки, вставил в другое окно. Новая Кнопка появилась, Но при нажатии на неё ничего не происходит! Итак вопросы: 1) Как найти код обработчика нажатия на кнопку ??? 2) как найти код который выполняется после нажатия на кнопку ???
|
|
|
RE: Реверс инженеринг - 2009-04-27 16:31:35.643333
|
|
|
fromRIDDER
Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
|
quote:
В Ресторатаре скопировал строчку скрипта кнопки, вставил в другое окно. Новая Кнопка появилась, Но при нажатии на неё ничего не происходит! А ты чего ожидал?:D 1. Определить компилятор. 2. Найти соответствующий декомпилятор. или в отладчике, действия зависят от компилятора.
|
|
|
RE: Реверс инженеринг - 2009-04-28 00:52:06.586666
|
|
|
tekton
Сообщений: 43
Оценки: 0
Присоединился: 2008-01-01 22:14:35.083333
|
quote:
1. Определить компилятор. Прога написана на Microsoft Visual C++ 7.0 ———————————— Что делаем дальше???
|
|
|
RE: Реверс инженеринг - 2009-04-28 09:44:51.196666
|
|
|
fromRIDDER
Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
|
Вариант 1. Определить, как создается окно, точнее какими API-функциями. 1. Хранится в ресурсах: ищи функции аналогичные DialogBoxParamA, DialogBoxParamW, DialogBoxIndirectParamA, DialogBoxIndirectParamW. 2. Создаётся на лету: CreateWindowExA. Через параметры этих функций передётся указатель на callback-функцию. Вариант 2. Загрузи программу в олю, запусти и в окне оли Windows в столбике WinProc указана callback-функция, остаётся найти нужное окно. Вариант 3. Запусти программу из-под оли, нажми кнопку или пункт меню, которые вызовут какую-нибудь API-функцию, на которую следует предварительно поставить брикпоинт, после срабатывания переходить на уровень иерархии функций выше и выше, пока не дойдешь callback-функцию. Вариант 4. Делаешь поиск по коду константы 111h (WM_COMMAND) или любую другую WM_*. Их будет много и не факт, что найдёшь. Можно ещё много чего придумать.
|
|
|
RE: Реверс инженеринг - 2009-04-28 13:01:58.533333
|
|
|
tekton
Сообщений: 43
Оценки: 0
Присоединился: 2008-01-01 22:14:35.083333
|
Спасиб!!! quote:
Вариант 2. Загрузи программу в олю, запусти и в окне оли Windows в столбике WinProc указана callback-функция, Handle=IK0018055C
Title=#100
Parent=0024059C
ID=00000452 (1106.)
Style=50001303 SS_ICON|SS_NOTIFY|SS_CENTERIMAGE|SS_SUNKEN|WS_CHILD|WS_VISIBLE
ExtStyle=00020004 WS_EX_NOPARENTNOTIFY|WS_EX_STATICEDGE
Thread=Main
ClsProc=77D475E0 USER32.77D475E0
Class=Static
Но там стоит системная библа Windows !!!!! Как быть в таких случаях??? Вот ссылка на файл >>>Файл<<< Мне надо из File=>Options продублировать кнопку-иконку (справа у которой ID=1106 ) продублировать в основное окно! Заранее спасибо! P.S. Хочу понять как это можно сделать! Обьясните плиз!!!
|
|
|
RE: Реверс инженеринг - 2009-04-28 14:27:56.126666
|
|
|
fromRIDDER
Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
|
Определение функции обработки нажатия кнопки на иконке в настройках. Запускаешь прогу из-под оли, жмешь на иконку, появляется диалоговое окно выбора файла, в оле жмешь F12 (pause), ALT+F9 (till to user code), в окне выбираешь файл или отмена, как хочешь, поподаешь в функцию обработки собщений, но не всего окна, а иконки. /*406165*/ PUSH EBP ;начало функции WinProc(hwnd,wmsg,lparam,wparam) /*406166*/ MOV EBP,ESP /*406168*/ SUB ESP,80 /*40616E*/ MOV EAX,DWORD PTR SS:[EBP+C] /*406171*/ CMP EAX,201 /*406176*/ PUSH EBX /*406177*/ PUSH ESI /*406178*/ PUSH EDI /*406179*/ JNZ 123.0040626A /*40617F*/ LEA ECX,DWORD PTR SS:[EBP-28] /*406182*/ CALL 123.0040C9B0 /*406187*/ MOV EBX,DWORD PTR SS:[EBP+8] /*40618A*/ PUSH 15 /*40618C*/ XOR EAX,EAX /*40618E*/ POP ECX /*40618F*/ LEA EDI,DWORD PTR SS:[EBP-7C] /*406192*/ REP STOS DWORD PTR ES:[EDI] /*406194*/ MOV BYTE PTR DS:[411440],AL /*406199*/ MOV EAX,DWORD PTR DS:[4113BC] /*40619E*/ MOV DWORD PTR SS:[EBP-78],EAX /*4061A1*/ LEA EAX,DWORD PTR SS:[EBP-80] /*4061A4*/ MOV EDI,123.00411440 /*4061A9*/ PUSH EAX /*4061AA*/ MOV DWORD PTR SS:[EBP-7C],EBX /*4061AD*/ MOV DWORD PTR SS:[EBP-80],58 /*4061B4*/ MOV DWORD PTR SS:[EBP-74],123.004018A4 /*4061BB*/ MOV DWORD PTR SS:[EBP-64],EDI /*4061BE*/ MOV DWORD PTR SS:[EBP-60],0FFFF /*4061C5*/ MOV DWORD PTR SS:[EBP-4C],0C1004 /*4061CC*/ CALL DWORD PTR DS:[<&COMDLG32.GetOpenFileNameA>] /*4061D2*/ XOR ESI,ESI ;здесь сработает точка останова … Когда найдешь функцию обработчика иконки главного окна, нужно будет дописать код вызова этой функции: push 0 push 0 push 201h push hwnd - дискриптор окна настроек, откуда берётся - отдельный вопрос call 00406165
|
|
|
RE: Реверс инженеринг - 2009-04-28 15:08:01.370000
|
|
|
fromRIDDER
Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
|
Определение функции обработки нажатия кнопки на иконке в главном окне. В главном окне нажми на настройки, в оле F12, ALT+F9, закрой настройки, сработает бряк, F8 (выход из функции), оказываемся в функции обработчике сообщений главного окна. /*40B9EB*/ PUSH EBP ;начало функции WinProc(hwnd,wmsg,lparam,wparam) /*40B9EC*/ MOV EBP,ESP /*40B9EE*/ MOV ECX,DWORD PTR SS:[EBP+C] /*40B9F1*/ MOV EAX,201 /*40B9F6*/ CMP ECX,EAX /*40B9F8*/ JA 123.0040BCF9 /*40B9FE*/ JE 123.0040BCE4 … /*40BBBA*/ PUSH DWORD PTR SS:[EBP+14] /*40BBBD*/ PUSH EDX /*40BBBE*/ PUSH 2712 /*40BBC3*/ PUSH DWORD PTR SS:[EBP+8] /*40BBC6*/ CALL 123.00405C8B /*40BBCB*/ JMP 123.0040BD49 ;здесь мы оказываемся … Как я понял, у иконки нет своей функции обработки, для того, чтобы её не создавать, можно снять флаг с иконки в главном окне в редакторе ресурсов SS_NOTIFY. Тогда нажатие на иконку будет обрабатывать само главное окно: /*40BCE4*/ PUSH DWORD PTR SS:[EBP+14] ;начало обработки нажатия кнопки мыши /*40BCE7*/ PUSH 2 /*40BCE9*/ PUSH 0A1 /*40BCEE*/ PUSH DWORD PTR SS:[EBP+8] /*40BCF1*/ CALL DWORD PTR DS:[<&USER32.SendMessageA>] /*40BCF7*/ JMP SHORT 123.0040BD49 ;прыжок к выходу их функции Т.к. сообщение обрабатывает главное окно, необходимо учитывать параметр lParam (x и y - куда именно кликнул мьшью), чтобы окно замены иконки появлялось при нажатии только на иконку, а не на любой части формы. В вышеприведённый код нужно вписать (надеюсь придумаешь сам как именно) код, проверяющий координаты клика и тот, что указал в предыдущем топике.
|
|
|
|
|