Files
WeChatHook/WeChatHook.cpp
T
2024-01-23 09:14:36 +08:00

73 lines
1.5 KiB
C++

// WeChatHook.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#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;
}
}