Хук мышиный

Тема в разделе "WASM.WIN32", создана пользователем cresta, 26 май 2018.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Привет, народ.

    Десять лет как не программировал, и вот на старости лет приспичило.
    Хочу хук на мышь, глобальный.
    Собрал dll с хуком, но почему-то при загрузке модуля не вызывается процедура _main. То же самое если я её переименую в initInstance.

    Код (Text):
    1.  
    2. #include <Windows.h>
    3. #include "stdafx.h"
    4. #include <iostream>
    5. using namespace std;
    6.  
    7.  
    8. HANDLE dllHandle=0;
    9.  
    10. int _main(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
    11. {
    12.    if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
    13.         dllHandle = hModule;
    14.         MessageBox(0, L"INIT DLL MAIN", 0, 0);
    15.     }
    16.     return TRUE;
    17. }
    18.  
    Поскольку хэндл модуля у нас ноль, то и хук не ставится с GetLastError = 1428

    Если назвать процедуру BOOL APIENTRY DllMain, то вообще не собирается:

    Код (Text):
    1.  
    2. Ошибка LNK2005 _DllMain@12 уже определен в Dll1.obj Dll1 C:\Users\user\source\repos\Dll1\Dll1\Dll1.obj
    3.  
    Погуглил - вроде пишут что это если MFC библиотека такая ошибка. Но я вроде не создавал MFC проект. Обычная стандартная динамическая библиотека.

    Как перейти к DllMain? Мне кажется это дложно помочь.
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Достал из подвала архива наследие славного q_q,
    и вставил оттуда
    #pragma comment(linker, "/ENTRY:main")
    но все равно не вызывается.

    Пока сделал workaround :

    Код (Text):
    1.  
    2. //global var
    3. HANDLE dllHandle=0;
    4.  
    5. extern "C" __declspec(dllexport)
    6. DWORD InstallHook(HWND hWnd)
    7. {
    8.     if (dllHandle == 0)
    9.         dllHandle=GetModuleHandle(L"Dll1.dll");
    10.  
    11. ...
    12. ...
    13. ...
    14.  
    Спм себя за волосы из болота вытащил. Но как-то это неправильно.
    Должна же вызываться main.
     
  3. CrawlUp

    CrawlUp New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2018
    Сообщения:
    24
    Вот HookMouse на ассемблере в формате Fasm, с С++ незнаком.
     

    Вложения:

    • hook mouse.zip
      Размер файла:
      4,1 КБ
      Просмотров:
      12
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Спасибо, на ассемблере у меня есть, но это не помогает найти причину переопределения DllMain
     
  5. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    124
    Адрес:
    Екатеринбург
    Может "DllEntry".