хз, сделал его для гмода чтоб было легко есличе проходить проверки. #include <windows.h> #include <tlhelp32.h> #include <string> DWORD getprocid(std::wstring name) { DWORD pid = 0; HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (snap != INVALID_HANDLE_VALUE) { PROCESSENTRY32W pe; pe.dwSize = sizeof(pe); if (Process32FirstW(snap, &pe)) { do { if (!name.compare(pe.szExeFile)) { pid = pe.th32ProcessID; break; } } while (Process32NextW(snap, &pe)); } CloseHandle(snap); } return pid; } bool injectdll(DWORD pid, const std::string& dllpath) { HANDLE p = OpenProcess(PROCESS_ALL_ACCESS, false, pid); if (!p) return false; void* mem = VirtualAllocEx(p, 0, dllpath.size() + 1, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); if (!mem) return false; WriteProcessMemory(p, mem, dllpath.c_str(), dllpath.size() + 1, 0); HMODULE k32 = GetModuleHandleA("kernel32"); FARPROC ll = GetProcAddress(k32, "LoadLibraryA"); HANDLE t = CreateRemoteThread(p, 0, 0, (LPTHREAD_START_ROUTINE)ll, mem, 0, 0); if (!t) return false; WaitForSingleObject(t, INFINITE); VirtualFreeEx(p, mem, 0, MEM_RELEASE); CloseHandle(t); CloseHandle(p); return true; } int main() { std::string dll = "C:\\Program Files (x86)\\Steam\\steamapps\\common\\GarrysMod\\garrysmod\\data\\skydd.dll"; DWORD pid = getprocid(L"gmod.exe"); if (pid == 0) return 1; injectdll(pid, dll); return 0; } Code #include <windows.h> #include <tlhelp32.h> #include <string> DWORD getprocid(std::wstring name) { DWORD pid = 0; HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (snap != INVALID_HANDLE_VALUE) { PROCESSENTRY32W pe; pe.dwSize = sizeof(pe); if (Process32FirstW(snap, &pe)) { do { if (!name.compare(pe.szExeFile)) { pid = pe.th32ProcessID; break; } } while (Process32NextW(snap, &pe)); } CloseHandle(snap); } return pid; } bool injectdll(DWORD pid, const std::string& dllpath) { HANDLE p = OpenProcess(PROCESS_ALL_ACCESS, false, pid); if (!p) return false; void* mem = VirtualAllocEx(p, 0, dllpath.size() + 1, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); if (!mem) return false; WriteProcessMemory(p, mem, dllpath.c_str(), dllpath.size() + 1, 0); HMODULE k32 = GetModuleHandleA("kernel32"); FARPROC ll = GetProcAddress(k32, "LoadLibraryA"); HANDLE t = CreateRemoteThread(p, 0, 0, (LPTHREAD_START_ROUTINE)ll, mem, 0, 0); if (!t) return false; WaitForSingleObject(t, INFINITE); VirtualFreeEx(p, mem, 0, MEM_RELEASE); CloseHandle(t); CloseHandle(p); return true; } int main() { std::string dll = "C:\\Program Files (x86)\\Steam\\steamapps\\common\\GarrysMod\\garrysmod\\data\\skydd.dll"; DWORD pid = getprocid(L"gmod.exe"); if (pid == 0) return 1; injectdll(pid, dll); return 0; }