Re[3]: global hcbt_active hook
От: Carc Россия http://www.amlpages.com/home.php
Дата: 17.09.08 20:53
Оценка: 3 (1)
"fromrus" <77202@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3108051@news.rsdn.ru...
> Здравствуйте, quodum, Вы писали:
>
> Q>Здравствуйте, fromrus, Вы писали:
>
> Q>1. Ключевые слова для поиска -- декорирование имён, экспорт, def-файл. Ещё есть замечательные утилиты depends и dumpbin из комплекта MSVC, которые показывают, что на самом деле экспортируется из DLLи.
>
> Q>2. Ещё нужно переменную HHOOK hook положить в разделяемую секцию.
>
> 1.Как обойтись без экспорта деф-файла?Никак?
а кстати hookProc и не обязана экспортироваться, т.к. в SetWindowsHookEx передается адрес hookProc. Ей совершенно не обязательно быть экспортируемой.
Def-файл для экспорта не нах не нужен, проще и быстрее как и сделано через
extern "C" __declspec(dllexport)

Другой момент что судя по тому что ХУКПРОК ((С) пытается быть экспортируемой да хук глобальной она находится в DLL. Соответственно в момент вызова SetWindowsHookEx ее адрес неизвестен. Его и нужно получить из DLL
1) Используя вариант с экспортом функции + GetProcAddress
2) Засунув в DLL еще одну функцию, которая будет возвращать адрес hookProc
//DLL код
int CALLBACK HookProc(...) {
//сама хуковая процедура
}

extern "C"
void* __declspec(dllexport) GetHookProcAddress(void)
{
retuen HookProc
}

//Exe код
1.получаем адрес GetHookProcAddress
2. Вызываем по адресу из п.1 функцию GetHookProcAddress, она вовращает реальный адрес HookProc в DLL
3. Стави хук и передаем ему адрес HookProc полученный при вызове GetHookProcAddress в п.2


> 2.Что значит "HHOOK hook положить в разделяемую секцию"-что значит разделяемая секция?

>
>
>
Posted via RSDN NNTP Server 2.1 beta
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.