· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› dll'ки

Посл.отвђт Сообщенiе


Дата: Авг 9, 2004 15:23:07

Чего-то в тупик попал. Есть глобальный хук(который через SetWindowsHook), нужно к этой dll'ke каким-то раком динамически подгрузить другие, в которых находятся процедуры-обработчики хуков. Я так понял, что их надо грузить при каждом аттаче, но в талмудах не рекомендуют использовать LoadLibrary в DllMain'e. Нужно это всё для плагинов. Предложения?


Дата: Авг 9, 2004 19:07:58 · Поправил: _Juicy

Как насчет создания дополнительного потока?

Только при вызове хука надо будет проверить, успел ли тот поток подгрузить те самые длли.


Дата: Авг 10, 2004 01:17:20

Попробуй грузить в самой HookProc, установив после первой загрузки флаг, чтобы повторно потом не грузить.


Дата: Авг 10, 2004 14:16:22

__Ranger
А почему нельзя сделать хуки прямо в первой длл.Тогда они сделают хук в своем процесе и в том куда их впихнет SetWindowsHook. Если так не катит то можно через CreateRemoteThread подгрузить длл или процедуру в нужный процес(только надо делать правильно а то как говорит Рихтер:"Все правильно, вы угробили чужой процес, при этом оставив свой в сохранности")


Дата: Авг 10, 2004 16:12:17

>>А почему нельзя сделать хуки прямо в первой длл.Тогда они сделают хук в своем процесе и в том куда их впихнет SetWindowsHook

Они там и делаются. Трабл в том, что на один хук могут вешатся несколько плагинов, поэтому в процедуре обработки хука делается вертушка, которая вызывает функции плагинов, отвечающих за обработку хука. Я не могу получить адреса этих функций, не загрузив плагины.

Посмотрел я IShell от Toxic'a, и подумал, не бросить ли мне этот геморрой. Затеял все ради того, чтобы напрямую вызывать из dll'ки обработчики в плагинах, минуя exe'шник.
в IShell'e же dll'ка передаёт данные через WM_COPYDATA в exe'шник, откуда потом вызывается нужный плагин(которые загружаются единственный раз при старте проограммы). Смущает лишь то, насколько быстр механизм сообщений Windows для этой затеи(например, чтобы обрабатывать WH_MOUSE).


Дата: Авг 10, 2004 23:42:44

__Ranger
Я эту вешь писал, имея знания по ассемблеру практически на нуле. Да я и сейчас не особо-то продвинулся, т.к. пока у меня нет задач, требующих решения на асме, а чисто теоретически все учить нет смысла - все равно скоро забуду.
Это я к тому, что есть другие способов передачи данных, например callback proc. Еще в MSDN можешь почитать про interprocess communication.


Дата: Авг 11, 2004 14:29:39

__Ranger
В книге Рихтера есть пример внедрения длл и способ общения с ней через скрытое диалоговое окно.Таким образом можно общаться между длл в чужом процесе и своим ехе.Используются оконные сообщения WM_APP.Это как еще один вариант.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.039