![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
tigger |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
Вообщем проблема в следующем.
Создаю программу на отлов открытия окон сторонними программами. Прога состоит из двух модулей, сама программа и dll. Отлавливаемых программ может быть несколько. Так вот в своем приложении беру id процесса сторонней программы которую хочу контролировать на открытие окон, передаю этот id себе в dll и все работает как часы. Но вот вопрос если отлавливаемых программ несколько 2 и более т.е будет несколько id процессов как осуществить передачу их в dll и следовательно отлов их окон. |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
так же, как и при передаче одного id.
в чем собстно проблема то? как передать данные? -------------------- There are always someone smarter than you... |
|||
|
||||
tigger |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
Да проблема при передаче 2 или более id.
У меня в приложении процедура которая стартует хук равна procedure StartHook(id:THandle) которая выполняется при нажатии на кнопку. А если процессов много как она будет выглядеть? |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
тут два варианта: либо просто вызываешь эту же процедуру для новых id, либо делаешь по-настоящему глобальный хук - т.е. не указываешь tid, а разбор полетов делаешь в функции хука.
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
tigger, как-как) а пофантазировать?! я же написал, пользуй array [0..0] of....
RangeChecking обязательно должен быть отключен!!!
как "принять", разберешься? учти, тебе еще в ловушку в других процессах нужно эти данные передать, через MMF например. -------------------- There are always someone smarter than you... |
|||
|
||||
tigger |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
MetalFan, очень ценную информацию дал.
А как потом раскидать их по MMF по отдельным файлам. В один lPIDs а в другой размер массива, я что-то делал ошибка вылетает на функции фильтре. ![]() Это сообщение отредактировал(а) tigger - 8.2.2007, 19:14 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
создается именованный MMF в приложении установившем хук, а остальные только читают. ты представляешь себе, как глобальные хуки вообще "фунцыклируют"? когда устанавливаешь глобальную ловушку, библиотека, содержащая функцию-фильтр проецируется во все процессы в системе... таким образом все специфические для процесса данные такие, как всяческие хэндлы (MMF, окон и проч.объектов системы) становятся непоределенными. Глобальные переменные содержат мусор и проч... значит в момент "присоединения" библиотеки к процессу тебе нужно получить все необходимые данные из созданного ранее при инициализации ловушки MMF. показывай, что делал ;) з.ы. могу конечно пример дать, хотя в принципе в сети они есть. остается только найти и адаптировать под свои нужды ;) да и хотелось бы чтоб сам разобрался большей частью... а я только направление могу дать и ошибки помочь подправить. Это сообщение отредактировал(а) MetalFan - 8.2.2007, 20:03 -------------------- There are always someone smarter than you... |
|||
|
||||
tigger |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
Вообщем что я написал
В приложении.
теперь что имеем в dll
так вот в функции фильтре hook нет hMemFile1, length, hMemFile, Hide_id равны нулю что не так делаю ли как можно это победить? |
||||
|
|||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
да, ошибочки есть...да и некоторые места я бы по-другому написал.
явные ошибки (если я сам не ошибаюсь ;) ): 1)
ну это ты так думаешь ;) давай код 2) После MapViewOfFile и "отправки" данных надо вызывать UnMapViewOfFile... замечания: 1) зачем создавать 2!!! MMF? не проще ли отдать все за один раз в одной структуре? 2) зачем каждый раз в функции-ловушке открывать/считывать данные? достаточно один раз считать, имхо. либо при "подгрузке" длл (см DLLProc), либо при первом вызове ф-ции-ловушки. 3) для "копирования" кусков памяти лучче имхо юзать Move или давай так) приложи аттачем файлы этого проекта. я поправлю. и тоже приаттачу. а то влом Ctrl+C/Ctrl+V жать много раз) Это сообщение отредактировал(а) MetalFan - 9.2.2007, 15:15 -------------------- There are always someone smarter than you... |
|||
|
||||
tigger |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
Знаешь явную ошибку здесь нашел это length := count; надо было так length^ := count^; а насчет всех твоих советов я попробую если не пойдет приложу, а то так обучения нет забудется скоро.
|
|||
|
||||
tigger |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
MetalFan, посмотри код там приложение с dll и тестовое приложение которое нужно словить, но что-то не идет. В чем проблема.
Присоединённый файл ( Кол-во скачиваний: 23 ) ![]() |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
а вот здесь пжалуста по подробнее ;) з.ы. + посмотрю попозже аттач -------------------- There are always someone smarter than you... |
|||
|
||||
dumb |
|
||||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
ух. сильно все перепутано...
примерная схема: хост-приложение:
dll:
ps.
![]() |
||||||
|
|||||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
dumb, опередил) да уж, код не блещет наглядностью
з.ы. ошибка как минимум в том, что не сделано UnmapViewOfFile Это сообщение отредактировал(а) MetalFan - 19.2.2007, 17:18 -------------------- There are always someone smarter than you... |
|||
|
||||
tigger |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 456 Регистрация: 30.4.2005 Репутация: -1 Всего: 4 |
dumb, по подробнее можно.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |