// WeChatHook.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include #include #include #define WeChatProcessName "WeChat.exe" VOID InjectDll(); DWORD ProcessNameFindPID(LPCSTR ProcessName); int main() { std::cout << "Hello World!\n"; } DWORD ProcessNameFindPID(LPCSTR ProcessName) { HANDLE ProcesllAll = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processInfo = {0}; processInfo.dwSize = sizeof(PROCESSENTRY32); do { if (strcmp(ProcessName, processInfo.szExeFile) == 0) { return processInfo.th32ProcessID; } } while (Process32Next(ProcesllAll, &processInfo)); return 0; } VOID InjectDll() { CHAR pathStr[0x100] = {"C://"}; DWORD PID = ProcessNameFindPID(WeChatProcessName); if (PID == 0) { printf("Can't find the process\n"); return; } HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); if (hProcess == NULL) { printf("Can't open the process\n"); return; } LPVOID pDllPath = VirtualAllocEx(hProcess, NULL, sizeof(pathStr), MEM_COMMIT, PAGE_READWRITE); if (pDllPath == NULL) { printf("Can't allocate memory\n"); return; } const char *pathStr = "Kernel32.dll"; // your ASCII string HMODULE k32 = GetModuleHandle(pathStr); LPVOID loadAdd = GetProcAddress(k32, "LoadLibraryW"); HANDLE exec = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)loadAdd, pDllPath, 0, NULL); if (exec == NULL) { printf("Can't create remote thread\n"); return; } }