Загрузка...

Дефолтный инжектор на плюсах

Тема в разделе Программирование создана пользователем zxcFlezyi 13 июл 2025. (поднята 15 июл 2025) 88 просмотров

  1. zxcFlezyi
    zxcFlezyi Автор темы 13 июл 2025 64 26 окт 2024
    хз, сделал его для гмода чтоб было легко есличе проходить проверки.


    Код
    #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;
    }
     
Загрузка...
Top