![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| RedHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
Вот тут на форуме много примеров как с эмулировать нажатие кнопок мыши или клавиатуры в другой программе. А как в своей программе можно организовать мехонизм противодействующий этому или хотя бы что бы он показывал процес который эмулирует эти сообщения???
Это сообщение отредактировал(а) RedHat - 11.7.2006, 09:42 |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Это же очевидно - перехват соответствующих апи функций и обработка результата их выполнения.
|
|||
|
||||
| RedHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
А пример моно или сылку где есть об этом инфа
|
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
WH_DEBUG
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
BUGOR, А разве можно в принципе отличить
SendMessage от реального нажатия? Можно, как вариант, использовать (где это возможно) неоконные компоненты, которые не могут ничего получать непосредственно сами. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Можно проследить откуда идёт сообщение
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Вот именно как? Я вчера 2 часа локальный хук на клавиатуру долбал -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Разберём метод под названием сплайсинг, на примере SendMessage, суть метода заключается в замене первых пяти байт вначале api функции(в нашем случае SendMessage) на длинный прыжок, который будет вести на функцию-обработчик(которая в свою очередь принимает все те же параметры, что и оригинальная SendMessage), функция обработчик находится в dll(в самом простом случае), а dll инжектится во все процессы(CreateRemoteThread или опять же с помощью хуков, это значения не имеет), так вот суть функции обработчика такова:
1.Заменить первые пять байт на оригинальные 2.Вызвать функцию с оригинальными параметрами 3.Обработать результат 4.Вернуть прыжок на себя вначало функции Так вот на третьем этапе нам никто не мешает проанализировать данные, которые вернула функция, на этом этапе так же не составит труда узнать процесс из которого была вызвана функция, короче всё, что угодно. |
|||
|
||||
| RedHat |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
вот то что я сделал для FindWindow. прошу не судить строго это моя первая подобного рода программа
|
||||||
|
|||||||
| RedHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
Существует программа AutoIt3
Не подскажите как можно боротся с такими программами на уровне своей программы то есть не позвалять ей нажимать в своей программе кнопки????? AutoIt3 посылает нажатие кнопок в другую программу если не сложно преведите список API для посылки команд другому приложению |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
SendMessage PostMessage Добавлено @ 12:24
А чем указанный выше метод BUGOR не устраивает? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Я так понял, что речь идет в изменении кода оригинальной библиотеки ядра, с тем чтобы вазвавший функцию sendmessage, поток вызвал не оригинальную, а нашу. Мы смотрим, не отправили ли это сообщение нам, если так, то блокировать иначе вызвать настоящую sendmessage.
Только если вдруг драйвер мыши шлет сообщения таким же образом, то ничего не выйдет Добавлено @ 12:55 Хотя поскольку dll работает в контексте приложения его вызвавшего, можно узнать номер потока и сравнить его с номером потока драйвера мыши или системного потока, который может за мышь отвечает. Это сообщение отредактировал(а) alexeis1 - 13.7.2006, 12:59 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
А как узнать
из перехваченой ? Вот это я не понял? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Номер потока узнаем при помощи GetCurrentThreadId
Фокус получается такой, ложная функция sendmessage будет выполнятся в контексте того приложения которое ее вызвало, а значит GetCurrentThreadId укажет виновника, остается передать это значение в свою програму любым методом, хоть при помощи буфера обмена! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| RedHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
Вот именно как посмотреть сообщение нам предназначается или нет вот в этом загвостка!! и по поводу блокировке если можна примерчик |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Это как раз просто, мы же знаем заголовок нашего приложения, находим главное окно, дальше находим всех его детей, детей их детей и т.д. и сверяем handl - ы(можно ограничется поиском одного окна, того которое нам нужно), если handle окна назначения совпадает с hendl-ом одного из наших контролов, то ясно что нам отправляют. тут и пример не нужен мы же после проверки (вдруг не нам!) должны переслать это сообщение правельному адресату, соответствено если адресат оказалсянашим окном, то мы этого не делаем
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| RedHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
понятно, но смотри ми же делаем инъекцию dll в чужой процесс так как ми будем знать handl той программы которую нужно защищать то есть как передать параметр??? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Ничего не тужно передавать его можно узнать используя функции FindWindow EnumWindows EnumChildWindows -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Я подумал, можно еще упростить решение даже не портя системные dll.
Просто поставить глобальный хук на сообщение WM_LBUTTONDOWN, и поскольку хук выполнится в контексте пославшего сообщение потока, то GetCurrentThreadId или подобные функции должены дать нам все что надо! Зная все параметры нашего окна, мы с легкостю его найдем. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| RedHat |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
В программе есть горячие клавиши (стрелки) , выше приведёный код работает нормально но толко если блокировать все сообщения идущие по handl окна то блокируются и сами стрелки!!! вот вместо ????? вопросов надо вставить код который смотрит чужое приложение послало нажатие или нет если чужое то блокировать если нет то разрешить выполнение???? если кого не затруднит обяснить как это моно реализовать а то я зашёл в тупик |
||||
|
|||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |