![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
Спасибо, буду дальше крутить=)
|
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
Я все сделал как ты написал в примере. Только у меня функция обработки хуков почему-то не вызывается. В отладчике не смог проследить как происходит вызов функции, обрабатывающей хуки из функции invoke SetWindowsHookEx,WH_CBT,eax,ebx,0
Для того чтобы было четко видно как происходит обработка, я решил вывести MessageBox, но почему-то он не был выведен. |
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
вот написал более простой аналог. Задача - при появлении нового окна вывести MessageBox.
Главный файл (exe) Код:
Код:
link /section:.bss,S /DLL /SUBSYSTEM:WINDOWS /debug /DEF:DLLSkeleton.def/LIBPATH:c:\masm32\lib DLLSkeleton.obj Последний раз редактировалось Dimarik; 30.07.2011 в 21:04. |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
никаких ошибок нет, но при открытии новых окон MessageBox не вылетает
|
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 09.03.2008
Сообщений: 127
|
![]()
У тебя функция hook_ некорректна. Вот:
Код:
![]() |
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
переделал.
у меня даже хоть и очень криво, но иногда начал работать. Во-первых, почему-то, когда в отладчике выполняю трассировку, при нажатии только на F8, начинает виснуть на call GetProcAddress Однако, если же в самом начале сделаешь точку останова на call [FunctionName_hook_set_F_addr] и нажмёшь F9, тогда всё работает нормально. А если после этой точки останова нажмёшь F9? то появится этот MessageBox. Однако, если зайдёшь внутри функции call [FunctionName_hook_set_F_addr] с помощью F7 и затем нажмёшь F9 - никакого MessageBox не выйдет и произойдёт точка останова. Принт скрин приложил во вложениях. И ещё одна проблема. Самая непонятная: при запуске программы без отладчика, никакого MessageBox не вылезет и программа просто завершит свою работу и выйдет. Может быть я как-то не так скопилировал всё? я основной модуль компилировал так: Код:
Код:
Код:
Код:
короче совсем непонятно. То одна и та же программа работает, то она не работает. |
![]() |
![]() |
![]() |
#17 | ||
Форумчанин
Регистрация: 09.03.2008
Сообщений: 127
|
![]() Цитата:
Это Цитата:
Код:
Код:
|
||
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
Я всё сделал как ты сказал.
Но у меня по прежнему всё работает только при запуске из отладчика! Хотя непонятно почему, какая программе разница, откуда её запускать? вот запускающего файла e1.asm Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
Добавил цикл обработки сообщений и всё заработало нормально.
Код:
1. По идее ведь был создан бесконечный цикл хуков. то есть: идёт сообщение, если нужное, обрабатываем хук, и потом CallNextHook, если ненужное - просто CallNextHook 2. Почему тогда в отладчике нормально работал? решил программу малость изменить. Надо чтобы при появлении окошка Microsoft Word (вопрос о сохранении документа) автоматически была нажата кнопка Сохранить В результате этого должен произойти автоматический клик по кнопке Сохранить. Код dll-ки Код:
Вылезло такое окошко: (см. вложения) Затем я поставил Break-Point-ы где мне надо было и не один не сработал. Как тогда можно в отладчике отладить эту dll-ку? P.S.Из кода программы видно, что в данный момент не осуществлялась проверка на то, является ли это окно Microsoft Word или какое-либо другое. Это сделаю потом. Сейчас главное щёлкнуть по кнопке сохранить. |
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 09.03.2008
Сообщений: 127
|
![]()
Для начала скачай програмку WinDowse и посмотри иерархию компонентов в интересующем окне +текст в окне (кнопка с текстом "ДА" на самом деле имеет текст "&Да") +имя класса кнопки (это не обязательно "button")
Код:
PS: убери лишние переменные из описания и ненужный код в DllEntry Код:
Последний раз редактировалось |{ot; 06.08.2011 в 00:17. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сетевые функции, хуки | Igoressicus | Помощь студентам | 1 | 05.11.2010 14:03 |
Хуки в Windows | JeyKip | Win Api | 11 | 09.05.2010 00:33 |
Программа, использующая хуки | anGeee | Win Api | 1 | 11.12.2009 20:59 |
ListView и хуки | 7KByte | Win Api | 0 | 10.07.2009 22:21 |
Глобальные хуки | Zeraim | Win Api | 2 | 24.05.2008 16:00 |