Как преобразовать этот скрипт для совместимости с моей 64-битной игрой? (взлом памяти)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать этот скрипт для совместимости с моей 64-битной игрой? (взлом памяти)

Сообщение Anonymous »

Недавно я создал сценарий C++ для взлома памяти для AssaultCube (32-битной игры-шутера), и мне было интересно, какие шаги нужно предпринять для преобразования этого сценария в сценарий, который может принимать параметры для РАЗНОЙ 64-битной игры. используйте чит-движок, чтобы получить статические указатели и смещения, сложите их, и я получу значение, которое хочу изменить, программа cpp, которую я пишу, 64-битная, я использую Windows 11, я уже преобразовал большую часть сценария для 32 битовой игры на эквивалент 64-битной игры под названием TCG Card Shop Simulator, проблемы заключаются в следующем.

Функция, которая принимает адрес и добавляет смещения, предполагает, что соответствующий math был (0x2238126d178 + 0x184 = 0x1c00000c05), что неверно и приводит к сбою записи в память, поскольку это поддельный адрес, почему последнее смещение полностью уничтожает мой адрес.

Я ценю всех, кто изучает это глубже, потому что здесь много кода, но я думаю, что основная проблема связана с WriteMemory и тем, как я передаю значения через GetModuleBaseAddress() и GetPointerAddress(), кстати, я изменил смещения и все такое на необходимые значения для новой 64-битной игры, которую пытаюсь взломать.
Ниже приведен неработающий скрипт:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 

DWORD64 GetModuleBaseAddress(TCHAR* lpszModuleName, DWORD pID) {
DWORD64 dwModuleBaseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID);
MODULEENTRY32 ModuleEntry32 = { 0 };
ModuleEntry32.dwSize = sizeof(MODULEENTRY32);

if (Module32First(hSnapshot, &ModuleEntry32)) {
do {
if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0) {
dwModuleBaseAddress = (DWORD64)ModuleEntry32.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &ModuleEntry32));
}
CloseHandle(hSnapshot);
return dwModuleBaseAddress;
}

DWORD64 GetPointerAddress(DWORD PID, DWORD64 gameBaseAddr, DWORD64 address, const std::vector& offsets) {
HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if (phandle == NULL) {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79154397/how-do-convert-this-script-to-be-compatible-with-my-64-bit-game-memory-hacking[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»