Advertisement
egor230

HHOOK MouseHook

Nov 10th, 2022 (edited)
719
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.66 KB | Gaming | 0 0
  1. #include <Windows.h>
  2. #include <TlHelp32.h>
  3. #include <string.h>
  4. #include<iostream>
  5. #include <fstream>
  6. #include "stdio.h"
  7.  
  8. #include <thread>
  9. #include <chrono>
  10. #include <winuser.h>
  11. #include <io.h>
  12. using namespace std;
  13.  
  14. DWORD GetProcessByName(char* process_name){
  15.     HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  16.     PROCESSENTRY32 process;
  17.     DWORD proc_id = 0;
  18.     if (Process32First(snapshot, &process)) {
  19.         while (Process32Next(snapshot, &process))       {
  20.             if (_stricmp(process.szExeFile, process_name) == 0) {
  21.                 proc_id = process.th32ProcessID;
  22.                 break;
  23.             }
  24.         }
  25.     }
  26.     CloseHandle(snapshot);
  27.     return proc_id;
  28. }
  29.  
  30. bool FileExist(char* name) { return _access(name, 0) != -1; };
  31.  
  32. HHOOK MouseHook;
  33. BOOL WINAPI HandlerRoutine(_In_ DWORD dwCtrlType) {
  34.     if (dwCtrlType == CTRL_CLOSE_EVENT) { UnhookWindowsHookEx(MouseHook); }
  35.     return 1;};
  36.  
  37. LRESULT __stdcall MousedProc(int nCode, WPARAM wParam, LPARAM lParam) { // код hook-точки   // идентификатор сообщения    // координаты мыши
  38.     if (nCode >= 0) {
  39.         switch (wParam) {
  40.         case WM_RBUTTONDOWN: {
  41.             return -1; break;
  42.         }
  43.         case WM_RBUTTONUP: {
  44.             return -1; break;
  45.         }
  46.         case WM_LBUTTONDBLCLK: {break; return 0; };
  47.                        break;
  48.         }
  49.         return CallNextHookEx(MouseHook, nCode, wParam, lParam);
  50.  
  51.     }
  52.     return CallNextHookEx(MouseHook, nCode, wParam, lParam);
  53. };
  54.  
  55. int SetHook(HANDLE hModule, DWORD ul_reason_for_call) {
  56.     if ((MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MousedProc, (HINSTANCE)hModule, ul_reason_for_call))) {
  57.         return 0;
  58.     }
  59. };
  60. bool Inject(DWORD pID, char* path){
  61.     LPVOID RemoteString;
  62.     LPCVOID LoadLibAddy;
  63.     HANDLE proc_handle = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pID);
  64.     /*
  65.     Доступ к объекту процесса. право доступа на соответствие дескриптору безопасности для процесса.
  66.     Этот параметр может быть одним или несколькими правами доступа к процессу.
  67.     Если вызывающий абонент включил привилегию SeDebugPrivilege, запрошенный доступ предоставляется независимо от содержимого дескриптора безопасности.
  68.  
  69.     [in] bInheritHandle Если  TRUE, процессы, созданные этим процессом, унаследуют дескриптор.
  70.      В противном случае процессы не наследуют этот дескриптор.
  71.  
  72.     [in] dwProcessId Идентификатор локального процесса, который нужно открыть
  73.  
  74.     Если вы используете GetCurrentProcessId в качестве аргумента этой функции, рассмотрите возможность использования GetCurrentProcess вместо OpenProcess для повышения производительности.
  75.  
  76.     Возвращаемое значение открытый дескриптор указанного процесса.
  77.     */
  78.     if (proc_handle == 0)   return false;
  79.     SetConsoleCtrlHandler(HandlerRoutine, 1);
  80.  
  81.  
  82.     printf("DLL found!\n\n");
  83.     SetHook(proc_handle, pID);
  84.     MSG msg;
  85.  
  86.     while (GetMessage(&msg, NULL, 0, 0))
  87.     {
  88.         TranslateMessage(&msg);
  89.         DispatchMessage(&msg);
  90.     }
  91.     system("PAUSE");
  92.  
  93.    
  94.     /*
  95.     CloseHandle(proc_handle);
  96.     FreeLibrary(hDLL);*/
  97.  
  98.     return true;
  99. }
  100. int main() {char path[256]; char process_name[32] = "notepad.exe";// ColdFear_retail.exe notepad.exe
  101.      DWORD pID;
  102.     do{
  103.         pID = GetProcessByName(process_name);
  104.         Inject(pID, path);
  105.     }    while (pID == 0);
  106.  
  107.     return 0;
  108. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement