-
Автор темы
- #1
перевел длл в байты, запускаю, но чит тупо не инжектится, проблема в коде или в самой дллке?
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
DWORD get_proc_id(const char* proc_name)
{
DWORD proc_id = 0;
auto* const h_snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (h_snap != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 proc_entry;
proc_entry.dwSize = sizeof(proc_entry);
if (Process32First(h_snap, &proc_entry))
{
do
{
if (!_stricmp(proc_entry.szExeFile, proc_name))
{
proc_id = proc_entry.th32ProcessID;
break;
}
} while (Process32Next(h_snap, &proc_entry));
}
}
CloseHandle(h_snap);
return proc_id;
}
unsigned char dll_bytes[] = {
// байты
};
size_t dll_size = sizeof(dll_bytes);
int main()
{
const char* proc_name = "RustClient.exe";
DWORD proc_id = 0;
while (!proc_id)
{
proc_id = get_proc_id(proc_name);
Sleep(30);
}
auto* const h_proc = OpenProcess(PROCESS_ALL_ACCESS, 0, proc_id);
if (h_proc && h_proc != INVALID_HANDLE_VALUE)
{
LPVOID loc = VirtualAllocEx(h_proc, nullptr, dll_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (loc)
{
WriteProcessMemory(h_proc, loc, dll_bytes, dll_size, nullptr);
auto* const h_thread = CreateRemoteThread(h_proc, nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA")), loc, 0, nullptr);
if (h_thread) CloseHandle(h_thread);
}
}
if (h_proc) CloseHandle(h_proc);
return 0;
}