Работа с оффсетами

Kecer

Участник
Автор темы
241
11
Привет, в общем хочу сделать некий AirJump для майнкрафт на с++, с помощью cheat engine получаю статический адрес, но как его использовать дальше не понимаю, то ли не то ввожу то ли ещё что-то не знаю

C++:
#include "iostream"
#include "windows.h"

DWORD pid;
DWORD Jumping = 0x007E1A30;

int airJumping;

using namespace std;

int main()
{
    HWND hwnd = FindWindowA(0, ("Minecraft 1.8.9"));

    GetWindowThreadProcessId(hwnd, &pid);
    HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

    while (true)
    {
        //airJumping = 65537;
        //WriteProcessMemory(pHandle, (LPVOID)Jumping, &airJumping, sizeof(int), 0);
        ReadProcessMemory(pHandle, (LPVOID)Jumping, &airJumping, sizeof(airJumping), 0);
        std::cout << airJumping << std::endl;
    }
}

Пытаюсь вывести оффсет, по факту должно вывести 65537, значение которое означает то что я стою на земле, но получаю 0, как будто такого оффсета не существует или что-то типо того
FMinOvb.png


Оффсет:
vq57hWO.png
 

reussssya

Новичок
28
8
Привет, в общем хочу сделать некий AirJump для майнкрафт на с++, с помощью cheat engine получаю статический адрес, но как его использовать дальше не понимаю, то ли не то ввожу то ли ещё что-то не знаю

C++:
#include "iostream"
#include "windows.h"

DWORD pid;
DWORD Jumping = 0x007E1A30;

int airJumping;

using namespace std;

int main()
{
    HWND hwnd = FindWindowA(0, ("Minecraft 1.8.9"));

    GetWindowThreadProcessId(hwnd, &pid);
    HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

    while (true)
    {
        //airJumping = 65537;
        //WriteProcessMemory(pHandle, (LPVOID)Jumping, &airJumping, sizeof(int), 0);
        ReadProcessMemory(pHandle, (LPVOID)Jumping, &airJumping, sizeof(airJumping), 0);
        std::cout << airJumping << std::endl;
    }
}

Пытаюсь вывести оффсет, по факту должно вывести 65537, значение которое означает то что я стою на земле, но получаю 0, как будто такого оффсета не существует или что-то типо того
FMinOvb.png


Оффсет:
vq57hWO.png
каждый шаг(оффсет) ты должен считывать через ReadProcessMemory
to the pointer:
uintptr_t gotoPtrAddress(HANDLE hProc, uintptr_t ptr, std::vector<unsigned> offsets) 
 { 
     uintptr_t addr = ptr; 
     for (unsigned i = 0; i < offsets.size(); ++i) 
     { 
         ReadProcessMemory(hProc, (BYTE*)addr, &addr, sizeof(addr), 0); 
         addr += offsets[i]; 
     } 
     return addr; 
 }
 

Kecer

Участник
Автор темы
241
11
каждый шаг(оффсет) ты должен считывать через ReadProcessMemory
to the pointer:
uintptr_t gotoPtrAddress(HANDLE hProc, uintptr_t ptr, std::vector<unsigned> offsets)
 {
     uintptr_t addr = ptr;
     for (unsigned i = 0; i < offsets.size(); ++i)
     {
         ReadProcessMemory(hProc, (BYTE*)addr, &addr, sizeof(addr), 0);
         addr += offsets[i];
     }
     return addr;
 }
Слушай в целом, я это уже не много по другому реализовал но твой вариант думаю будет по лучше и более эффективным при создание чита, но у меня появилась следующая проблема, в целом всё хорошо нахожу оффсет, всё работает, я могу релогнуть игру, зайти в неё заного после зайти в мир, выбрать программу заного, в cheat engine и значения не спадут, но допустим при смерти, либо же при выхода из мира и последующего захода в мир, или при заходе на сервер, или в другой мир, значения спадают, и почему-то перестают работать, мб как-то не правильно ищу, обрыскал все источники не чего того что мне могло помочь не нашёл. И ещё вопрос, есть ещё какие-то способы работы с памятью игры, если допустим в какой-то из игр, игра детектит процесс Cheat Engine и не даёт его запустит, закрывая игру. Заранее спасибо за помощь
 

reussssya

Новичок
28
8
Слушай в целом, я это уже не много по другому реализовал но твой вариант думаю будет по лучше и более эффективным при создание чита, но у меня появилась следующая проблема, в целом всё хорошо нахожу оффсет, всё работает, я могу релогнуть игру, зайти в неё заного после зайти в мир, выбрать программу заного, в cheat engine и значения не спадут, но допустим при смерти, либо же при выхода из мира и последующего захода в мир, или при заходе на сервер, или в другой мир, значения спадают, и почему-то перестают работать, мб как-то не правильно ищу, обрыскал все источники не чего того что мне могло помочь не нашёл. И ещё вопрос, есть ещё какие-то способы работы с памятью игры, если допустим в какой-то из игр, игра детектит процесс Cheat Engine и не даёт его запустит, закрывая игру. Заранее спасибо за помощь
попробуй другие указатели использовать. могу посоветовать только x64 (или x32dbg) либо ollydbg
 

x0r1x

Потрачен
114
97
Слушай в целом, я это уже не много по другому реализовал но твой вариант думаю будет по лучше и более эффективным при создание чита, но у меня появилась следующая проблема, в целом всё хорошо нахожу оффсет, всё работает, я могу релогнуть игру, зайти в неё заного после зайти в мир, выбрать программу заного, в cheat engine и значения не спадут, но допустим при смерти, либо же при выхода из мира и последующего захода в мир, или при заходе на сервер, или в другой мир, значения спадают, и почему-то перестают работать, мб как-то не правильно ищу, обрыскал все источники не чего того что мне могло помочь не нашёл. И ещё вопрос, есть ещё какие-то способы работы с памятью игры, если допустим в какой-то из игр, игра детектит процесс Cheat Engine и не даёт его запустит, закрывая игру. Заранее спасибо за помощь
во первых ты должен выяснить, в какой именно динамической библиотеке, или исполняемом файле, лежит то что тебе надо, это можно сделать методом тыка в ce, или-же методом поиска указателя вручную через olydbg. второй способ не даёт гарантии что ты найдёшь вообще какой либо указатель, но в ce ты обязательно какой-то указатель да и найдёшь, проблема в том, что вроде бы указатель работает как надо, но в каком-то моменте игры, он может указывать на не пойми что, либо же на какое-то другое значение. это решается с помощью: ida pro, olydbg или-же x32dbg. но точно такая же проблема, если ты найдёшь указатель с неправильным базовым модулем, или-же с неправильными оффсетами.

и вообще для майнкрафта в основном пишут читы на jav'е, если тебе так сильно хочется писать чит на c++ для майнкрафта, советую java native interface(jni).