Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Реверс инженеринг

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Взлом программ] >> Реверс инженеринг
Имя
Сообщение << Старые топики   Новые топики >>
Реверс инженеринг - 2009-04-27 05:20:55.900000   
tekton

Сообщений: 43
Оценки: 0
Присоединился: 2008-01-01 22:14:35.083333
Привет всем!!!

Такакя проблема!
Мне надо продублировать кнопку из одного диалогового окна во второе окно!
В Ресторатаре скопировал строчку скрипта кнопки, вставил в другое окно.
Новая Кнопка появилась,
Но при нажатии на неё ничего не происходит!

Итак вопросы:
1) Как найти код обработчика нажатия на кнопку ???
2) как найти код который выполняется после нажатия на кнопку ???
Post #: 1
RE: Реверс инженеринг - 2009-04-27 16:31:35.643333   
fromRIDDER

Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
quote:

В Ресторатаре скопировал строчку скрипта кнопки, вставил в другое окно.
Новая Кнопка появилась,
Но при нажатии на неё ничего не происходит!

А ты чего ожидал?:D

1. Определить компилятор.
2. Найти соответствующий декомпилятор.
или в отладчике, действия зависят от компилятора.

Post #: 2
RE: Реверс инженеринг - 2009-04-28 00:52:06.586666   
tekton

Сообщений: 43
Оценки: 0
Присоединился: 2008-01-01 22:14:35.083333
quote:

1. Определить компилятор.


Прога написана на&nbsp; Microsoft Visual C++ 7.0

————————————
Что делаем дальше???

Post #: 3
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_*. Их будет много и не факт, что найдёшь.
Можно ещё много чего придумать.
Post #: 4
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 !!!!! Как быть в таких случаях???

Вот ссылка на файл &gt;&gt;&gt;Файл&lt;&lt;&lt;

Мне надо из File=>Options продублировать кнопку-иконку (справа у которой ID=1106 ) продублировать в основное окно!
Заранее спасибо!
P.S. Хочу понять как это можно сделать! Обьясните плиз!!!
Post #: 5
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*/&nbsp; PUSH EBP ;начало функции WinProc(hwnd,wmsg,lparam,wparam)
/*406166*/&nbsp; MOV EBP,ESP
/*406168*/&nbsp; SUB ESP,80
/*40616E*/&nbsp; MOV EAX,DWORD PTR SS:[EBP+C]
/*406171*/&nbsp; CMP EAX,201
/*406176*/&nbsp; PUSH EBX
/*406177*/&nbsp; PUSH ESI
/*406178*/&nbsp; PUSH EDI
/*406179*/&nbsp; JNZ 123.0040626A
/*40617F*/&nbsp; LEA ECX,DWORD PTR SS:[EBP-28]
/*406182*/&nbsp; CALL 123.0040C9B0
/*406187*/&nbsp; MOV EBX,DWORD PTR SS:[EBP+8]
/*40618A*/&nbsp; PUSH 15
/*40618C*/&nbsp; XOR EAX,EAX
/*40618E*/&nbsp; POP ECX
/*40618F*/&nbsp; LEA EDI,DWORD PTR SS:[EBP-7C]
/*406192*/&nbsp; REP STOS DWORD PTR ES:[EDI]
/*406194*/&nbsp; MOV BYTE PTR DS:[411440],AL
/*406199*/&nbsp; MOV EAX,DWORD PTR DS:[4113BC]
/*40619E*/&nbsp; MOV DWORD PTR SS:[EBP-78],EAX
/*4061A1*/&nbsp; LEA EAX,DWORD PTR SS:[EBP-80]
/*4061A4*/&nbsp; MOV EDI,123.00411440
/*4061A9*/&nbsp; PUSH EAX
/*4061AA*/&nbsp; MOV DWORD PTR SS:[EBP-7C],EBX
/*4061AD*/&nbsp; MOV DWORD PTR SS:[EBP-80],58
/*4061B4*/&nbsp; MOV DWORD PTR SS:[EBP-74],123.004018A4
/*4061BB*/&nbsp; MOV DWORD PTR SS:[EBP-64],EDI
/*4061BE*/&nbsp; MOV DWORD PTR SS:[EBP-60],0FFFF
/*4061C5*/&nbsp; MOV DWORD PTR SS:[EBP-4C],0C1004
/*4061CC*/&nbsp; CALL DWORD PTR DS:[&lt;&amp;COMDLG32.GetOpenFileNameA&gt;]
/*4061D2*/&nbsp; XOR ESI,ESI ;здесь сработает точка останова

Когда найдешь функцию обработчика иконки главного окна, нужно будет дописать код вызова этой функции:

push 0
push 0
push 201h
push hwnd - дискриптор окна настроек, откуда берётся - отдельный вопрос
call 00406165

Post #: 6
RE: Реверс инженеринг - 2009-04-28 15:08:01.370000   
fromRIDDER

Сообщений: 1075
Оценки: 30
Присоединился: 2008-01-14 20:20:53.380000
Определение функции обработки нажатия кнопки на иконке в главном окне.

В главном окне нажми на настройки, в оле F12, ALT+F9, закрой настройки, сработает бряк, F8 (выход из функции), оказываемся в функции обработчике сообщений главного окна.

/*40B9EB*/&nbsp; PUSH EBP ;начало функции WinProc(hwnd,wmsg,lparam,wparam)
/*40B9EC*/&nbsp; MOV EBP,ESP
/*40B9EE*/&nbsp; MOV ECX,DWORD PTR SS:[EBP+C]
/*40B9F1*/&nbsp; MOV EAX,201
/*40B9F6*/&nbsp; CMP ECX,EAX
/*40B9F8*/&nbsp; JA 123.0040BCF9
/*40B9FE*/&nbsp; JE 123.0040BCE4

/*40BBBA*/&nbsp; PUSH DWORD PTR SS:[EBP+14]
/*40BBBD*/&nbsp; PUSH EDX
/*40BBBE*/&nbsp; PUSH 2712
/*40BBC3*/&nbsp; PUSH DWORD PTR SS:[EBP+8]
/*40BBC6*/&nbsp; CALL 123.00405C8B
/*40BBCB*/&nbsp; JMP 123.0040BD49 ;здесь мы оказываемся

Как я понял, у иконки нет своей функции обработки, для того, чтобы её не создавать, можно снять флаг с иконки в главном окне в редакторе ресурсов SS_NOTIFY. Тогда нажатие на иконку будет обрабатывать само главное окно:

/*40BCE4*/&nbsp; PUSH DWORD PTR SS:[EBP+14] ;начало обработки нажатия кнопки мыши
/*40BCE7*/&nbsp; PUSH 2
/*40BCE9*/&nbsp; PUSH 0A1
/*40BCEE*/&nbsp; PUSH DWORD PTR SS:[EBP+8]
/*40BCF1*/&nbsp; CALL DWORD PTR DS:[&lt;&amp;USER32.SendMessageA&gt;]
/*40BCF7*/&nbsp; JMP SHORT 123.0040BD49 ;прыжок к выходу их функции

Т.к. сообщение обрабатывает главное окно, необходимо учитывать параметр lParam (x и y - куда именно кликнул мьшью), чтобы окно замены иконки появлялось при нажатии только на иконку, а не на любой части формы. В вышеприведённый код нужно вписать (надеюсь придумаешь сам как именно) код, проверяющий координаты клика и тот, что указал в предыдущем топике.

Post #: 7
Страниц:  [1]
Все форумы >> [Взлом программ] >> Реверс инженеринг







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.