Ну начнем с того, что Dead Ricing 3 это x64 игра. А трейнер собирается под x86,так еще и исходники тоже под x64 заточены. Примерно так надо код фиксить и компилить трейнер надо под x64. DWORD64 MemReader::ReadPointer(DWORD64 base, DWORD64* offsets, int count){ for (int i = 0; i < count - 1; i++) { base = Read(base + offsets[i], 8).toUINT64(); } return base + offsets[count - 1];}Единственное, чем я тебе могу помочь, это предоставить свои наработки последнего поколения (их в уроках не было). Наработки независимы от архитектуры под которую ты компилишь (x86 или x64), а также от кодировки ANSI или UNICODE. Но однако, трейнер тебе все равно надо собрать под x64, потому что ты работаешь с игрой в x64. Исходники во вложении. Метод ReadPointer накидаешь сам думаю, если возникнут осложнения - пиши. Пример использования: #include "Process.h"#include "MemWorker.h"int SeDebugPrivilege(void){ HANDLE hToken; LUID Val; TOKEN_PRIVILEGES tp; OpenProcessToken(HANDLE(-1), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Val); tp.PrivilegeCount = 1; tp.Privileges[0].Luid = Val; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof (tp), NULL, NULL); CloseHandle(hToken); return 1;}int main(int argc, CHAR* argv[]){ GH::Process process; GH::MemWorker memory; process.FindProcessID(GH::string(TEXT("game.exe"))); DWORD PID = process.GetPID(); if (PID == 0) { printf("Run game first!\n"); system("PAUSE"); return 0; } printf("PID: %X\n", PID); process.OpenProcess(PROCESS_ALL_ACCESS); // открываешь хэндл memory.SetProcess(&process); // помещаешь указатель на объект Process в MemWorker // ... дальше оперируешь с процессом игры process.CloseProcess(); // закрываешь хэндл return 0;}Mem.zip