73 lines
1.5 KiB
C++
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;
|
|
}
|
|
}
|