Сейчас на форуме: _MBK_, vsv1 (+4 невидимых)

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

Ранг: 62.5 (постоянный), 2thx
Активность: 0.050
Статус: Участник

Создано: 26 мая 2007 21:49
· Личное сообщение · #1

как то я на WASMе наткнулся на Уроки Iczelion'а
Win32 API. Урок 6. Клавиатура
Ну так вот я решил в олли поисследовать
эту прогу.
Там программа реагирует на нажатие клавиш через ф-цию WM_CHAR
соответственно вместо того чтобы проге перейти на обработчик WM_CHAR
в коде программы она крутится здесь:

004010E2 |> 6A 00 /PUSH 0 ; /MsgFilterMax = 0
004010E4 |. 6A 00 |PUSH 0 ; |MsgFilterMin = 0
004010E6 |. 6A 00 |PUSH 0 ; |hWnd = NULL
004010E8 |. 8D45 B4 |LEA EAX,DWORD PTR SS:[EBP-4C] ; |
004010EB |. 50 |PUSH EAX ; |pMsg
004010EC |. E8 C3000000 |CALL <JMP.&user32.GetMessageA> ; \GetMessageA
004010F1 |. 0BC0 |OR EAX,EAX
004010F3 |. 74 14 |JE SHORT key.00401109
004010F5 |. 8D45 B4 |LEA EAX,DWORD PTR SS:[EBP-4C]
004010F8 |. 50 |PUSH EAX ; /pMsg
004010F9 |. E8 E0000000 |CALL <JMP.&user32.TranslateMessage> ; \TranslateMessage
004010FE |. 8D45 B4 |LEA EAX,DWORD PTR SS:[EBP-4C]
00401101 |. 50 |PUSH EAX ; /pMsg
00401102 |. E8 A1000000 |CALL <JMP.&user32.DispatchMessageA> ; \DispatchMessageA
00401107 |.^EB D9 \JMP SHORT key.004010E2

Я не понял это что баг олли ,что когда захожу по F7 внутрь юзера32 затем
рет в код программы отладчик как будто не видит обработчика и крутится
в этом цикле, а обработчик WM_CHAR стоит ниже в коде программы
Как в общем случае попасть на обработчик WM_CHAR внутри программы не
отлаживая user32.dll?
И ещё как не нажимая кнопки на клавиатуре сделать так, чтобы программа
думала, что я этут кнопку нажал?
(в какой регистр проца и когда какое значение заносить?)
Вот программа

40e6_26.05.2007_CRACKLAB.rU.tgz - key.exe



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

Создано: 26 мая 2007 22:57 · Поправил: _taha_
· Личное сообщение · #2

Запускаешь прогу, в Olly переходишь к окну windows
выбираешь окно (там только одно)... Жмешь на правую. Message breakpoint.. Выбираешь сообщение 102 WM_CHAR. Вуаля..

INTRODUCTION TO CRACKING WITH OLLY 12.pdf
Ricardo Narvaja



Ранг: 62.5 (постоянный), 2thx
Активность: 0.050
Статус: Участник

Создано: 29 мая 2007 21:39
· Личное сообщение · #3

ну скажи а в каком регистре (или он в стеке?) можно посмотреть код нажатой клавиши
и не нажимая клавишу сделать так чтобы прога думала что я её нажал



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 29 мая 2007 22:13 · Поправил: Sturgeon
· Личное сообщение · #4

GodFather пишет:
в каком регистре (или он в стеке?) можно посмотреть код нажатой клавиши

Судя по исходнику (и MSDN) код нажатой клавиши возвращается в wParam. Как только брякнешься смотри в окно стека.

GodFather пишет:
сделать так чтобы прога думала что я её нажал

а вот это уже сложно. Скорее всего надо эмулировать нажатие клавиши. Как сделать хз.
Хотя в данном случае все очевидно
Вместо PUSH [ARG.3] вставляешь PUSH то_что_тебе_надо
0040112E |. FF75 10 PUSH [ARG.3]
00401131 |. 8F05 20304000 POP DWORD PTR DS:[403020]
00401137 |. 6A 01 PUSH 1 ; /Erase = TRUE
00401139 |. 6A 00 PUSH 0 ; |pRect = NULL
0040113B |. FF75 08 PUSH [ARG.1] ; |hWnd
0040113E |. E8 77000000 CALL <JMP.&user32.InvalidateRect> ; \InvalidateRect





Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 30 мая 2007 11:03
· Личное сообщение · #5

GodFather пишет:
И ещё как не нажимая кнопки на клавиатуре сделать так, чтобы программа
думала, что я этут кнопку нажал?

Если из другой программы, то что тебе мешает послать тоже сообщение WM_CHAR?GodFather пишет:

Как в общем случае попасть на обработчик WM_CHAR внутри программы не
отлаживая user32.dll?

Теоретически можно. Ставишь бряк на месте, где номер сообщения сравнивается с нужным (WM_CHAR). Но на деле в Ольке я думаю ты туда не попадешь, когда тебе надо.
Если хочешь посмотреть коды клавиш - печатай на форме сам числовой код клавиши и узнаешь таким образом любой код.

-----
radio uno in ibisa ...



 eXeL@B —› Вопросы новичков —› как попасть на обработчик WM_CHAR
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати