Сейчас на форуме: asfa, Rio, _MBK_, Adler (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Нажатие кнопки Close
Посл.ответ Сообщение

Ранг: 2.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 мая 2013 13:27
· Личное сообщение · #1

Здравствуйте, обращаюсь к вам за помощью.
Разбираю работу программы. )

С активационным окном при запуске разобрался…

Помогите найти место в программе которое отвечает за убирание наг окна и самое главное за возобновление работы программы после нажатие кнопки Close.

Так как программа специфическая, требует гитары для отладки (наг окно и остановка программы происходит после примерно 250 сыгранных нот)
То наг окно можно вызвать путём изменения флага Z в следующем месте после запуска программы:

00D70689 . /0F84 2C010000 JE MIDI_Gui.00D707BB ; поменять флаг
00D7068F . |8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00D70692 . |50 PUSH EAX
00D70693 . |8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
00D70696 . |51 PUSH ECX
00D70697 . |C646 22 00 MOV BYTE PTR DS:[ESI+22],0
00D7069B . |C745 E0 F0449>MOV DWORD PTR SS:[EBP-20],MIDI_Gui.019344F0 ; ASCII "Close"



Отлавливал место нажатия по кнопке close с помощью BP TranslateMessage попал на
00DF645A . 50 PUSH EAX ; /pMsg = WM_LBUTTONUP hw = 711C4 ("MIDI Guitar") Keys = 0 X = 516. Y = 378.
00DF645B . FF15 00B3F600 CALL DWORD PTR DS:[<&USER32.DispatchMessageW>]

Но где дальше происходит закрытие наг окна и возобновление работы программы, чтоб она опять вернулась на место где я ставлю бряк (00D70689 . /0F84 2C010000 JE MIDI_Gui.00D707BB) не пойму????

Программа MIDI Guitar 0.6.1
http://www.jamorigin.com/midi-guitar/MIDI-Guitar-0.6.1-Win.zip
разбираю 32bitный exe



Ранг: 2.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 мая 2013 23:25
· Личное сообщение · #2

как я понял TranslateMessage после послания на неё pMsg = WM_LBUTTONUP hw = 711C4 ("MIDI Guitar") Keys = 0 X = 516. Y = 378. принимает решение закрыть окно. пытаюсь в ручную посылать( меняя в дампе байты на правильные координаты) но ничего не выходит.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 17 мая 2013 00:39
· Личное сообщение · #3

solderr63 пишет:
Отлавливал место нажатия по кнопке close с помощью BP TranslateMessage

сообщение кнопкам нужно ловить в процедуре класса кнопки или родительского элемента - окна, например
советую отловить создание класса RegisterClass / RegisterClassEx
пройтись по структуре, и выйти на ClassProc.



Ранг: 2.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 08:40
· Личное сообщение · #4

-=AkaBOSS=- пишет:
советую отловить создание класса RegisterClass / RegisterClassEx


каким образом это сделать?
я ставлю BP RegisterClassW
02DFFDAC 767264EF /CALL to RegisterClassW from ole32.767264ED
02DFFDB0 02DFFDC0 \pWndClass = 02DFFDC0
02DFFDB4 757269C1 KERNELBA.InterlockedIncrement

потом
02DFFDDC 000FFF22 MIDI_Gui.000FFF22
02DFFDE0 02DFFE00 \pWndClassEx = 02DFFE00
02DFFDE4 D0280A84
02DFFDE8 00000000
02DFFDEC 03E01348
02DFFDF0 7FFD7000
02DFFDF4 03E013B0 ASCII "JUCE_6d5eb4c27"
02DFFDF8 03E013E0
02DFFDFC 03E013C0 UNICODE "JUCE_6d5eb4c27"
02DFFE00 00000030
02DFFE04 00000000
02DFFE08 00166200 MIDI_Gui.00166200
02DFFE0C 00000000
02DFFE10 00000004
02DFFE14 000C0000 MIDI_Gui.000C0000
02DFFE18 00000000
02DFFE1C 00000000
02DFFE20 00000000
02DFFE24 00000000
02DFFE28 03E013C0 UNICODE "JUCE_6d5eb4c27"
02DFFE2C 00000000

потом TERMINATED




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 17 мая 2013 09:31 · Поправил: -=AkaBOSS=-
· Личное сообщение · #5

solderr63 пишет:
02DFFDDC 000FFF22 MIDI_Gui.000FFF22
02DFFDE0 02DFFE00 \pWndClassEx = 02DFFE00

отсюда ясно видно, что в стэке по адресу 02DFFE00 лежит структура WNDCLASSEX
теперь самое время заглянуть в справочник по winapi и посмотреть описание полей этой структуры.
среди них должно быть и искомое поле с именем WndProc (или ClassProc)

а вообще, если проблемы в исследовании начались уже на этом этапе, то, вероятно, стоит-таки почитать туторы Нарвахи - их писали и переводили, чтобы новичкам было легче находить ответы на подобные вопросы.


solderr63 пишет:
туторы Нарвахи прочитал 24 главы

в таком случае, стоит перечитать 12ую главу.
там описывается, каким образом можно попасть на обработчик сообщений.



Ранг: 2.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 09:57
· Личное сообщение · #6

туторы Нарвахи прочитал 24 главы...читаю дальше.... нужно общение с людьми по теме.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 10:47
· Личное сообщение · #7

ИМХО, Вы пытаетесь исправить следствие(окно), а не причину его появления. Насколько я понимаю, ключевая фраза здесь Please locate your license file that was linked to in your order fulfillment email(файл лицензии пришлют на мыло)
Code:
  1. 0042582D  |.  C745 EC D067F MOV DWORD PTR SS:[LOCAL.5],OFFSET 00FE67 ; ASCII "Please locate your license file that was linked to in your order fulfillment email."

Связанная с этим функция 004257B0, которая проверяет данный файл лицензии.
Также по запросу Trial, можно найти два адреса 00424C90 и 00425230.
Касаемо
Code:
  1. 00D70689 . /0F84 2C010000 JE MIDI_Gui.00D707BB ; поменять флаг
  2. 00D7068F . |8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
  3. 00D70692 . |50 PUSH EAX
  4. 00D70693 . |8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
  5. 00D70696 . |51 PUSH ECX
  6. 00D70697 . |C646 22 00 MOV BYTE PTR DS:[ESI+22],0
  7. 00D7069B . |C745 E0 F0449>MOV DWORD PTR SS:[EBP-20],MIDI_Gui.019344F0 ; ASCII "Close"

то у меня данный участок кода пошифрован, из-чего могу предположить, что в правильном файле лицензии содержится ключ для декодирования.
А еще из-за использования аппаратного Creative ASIO и нечаянного заскока на INT3 система в BSOD валиться драйвером звучки Creative



Ранг: 2.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 11:34
· Личное сообщение · #8

ELF_7719116 пишет:
Касаемо

Code:


00D70689 . /0F84 2C010000 JE MIDI_Gui.00D707BB ; поменять флаг00D7068F . |8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]00D70692 . |50 PUSH EAX00D70693 . |8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]00D70696 . |51 PUSH ECX00D70697 . |C646 22 00 MOV BYTE PTR DS:[ESI+22],000D7069B . |C745 E0 F0449>MOV DWORD PTR SS:[EBP-20],MIDI_Gui.019344F0 ; ASCII "Close"


то у меня данный участок кода пошифрован, из-чего могу предположить, что в правильном файле лицензии содержится ключ для декодирования.


скорее всего нужно запустить программу и выбрать Trial и потом этот участок виден
когда иследовал защиту я сделал джампы чтоб убрать окно при старте и после этого снял дамп и сохранил файл, с ним и работаю, видимо поэтому у меня эта часть не зашифрована )



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 11:45
· Личное сообщение · #9

solderr63
в любом случае там файл лицензии xml должен быть, из него информация вся черпается. Хотя паркуром в функции по адресу 00424C90, можно достичь правильного результата


| Сообщение посчитали полезным: solderr63
 eXeL@B —› Вопросы новичков —› Нажатие кнопки Close
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати