Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

C++ Чтение памяти

  • Автор темы Автор темы nommo
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Янв 2023
Сообщения
2
Реакции
0
Доброго времени суток. Не получается разобраться с чтением памяти игры.
Есть базовый адрес со смещениями - "Engine.dll"+008A6AE4+9CC+18+30+444+4+2FC+8C = 252D850C, по которому лежит значение хп. Если обращаюсь напрямую к конечному адресу 252D850C - значение хп могу считать, но если я пытаюсь прочитать по адресу "Engine.dll"+008A6AE4 - получаю ерунду какую-то.
Скорее всего - я не правильно читаю по адресу, который содержит .длл. Пытался следующим образом:
C++:
Expand Collapse Copy
DWORD hp = (DWORD)GetModuleHandleA("Engine.dll") + 0x8A6AE4;
но значение по адресу, которое я получаю, не бьется со значением из СЕ.

Код:
C++:
Expand Collapse Copy
DWORD hp = (DWORD)GetModuleHandleA("Engine.dll") + 0x8A6AE4;
DWORD buff_1 = 0;
ReadProcessMemory(hProc, (PBYTE*)hp, &buff_1, sizeof(int), NULL);
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну так ты написал что у тебя адресс со смещением, а смещение ты не полностью написал
тебе надо сделать вот так:
C++:
Expand Collapse Copy
DWORD hp = (DWORD)GetModuleHandleA("Engine.dll") + 0x8A7CC8;
DWORD buff_1 = 0;
ReadProcessMemory(hProc, (PBYTE*)hp, &buff_1, sizeof(int), NULL);
 
Доброго времени суток. Не получается разобраться с чтением памяти игры.
Есть базовый адрес со смещениями - "Engine.dll"+008A6AE4+9CC+18+30+444+4+2FC+8C = 252D850C, по которому лежит значение хп. Если обращаюсь напрямую к конечному адресу 252D850C - значение хп могу считать, но если я пытаюсь прочитать по адресу "Engine.dll"+008A6AE4 - получаю ерунду какую-то.
Скорее всего - я не правильно читаю по адресу, который содержит .длл. Пытался следующим образом:
C++:
Expand Collapse Copy
DWORD hp = (DWORD)GetModuleHandleA("Engine.dll") + 0x8A6AE4;
но значение по адресу, которое я получаю, не бьется со значением из СЕ.

Код:
C++:
Expand Collapse Copy
DWORD hp = (DWORD)GetModuleHandleA("Engine.dll") + 0x8A6AE4;
DWORD buff_1 = 0;
ReadProcessMemory(hProc, (PBYTE*)hp, &buff_1, sizeof(int), NULL);

Ты просто не понял сути, советую прочитать детальнее о смещениях и в целом о памяти.А так по теме -

работать это должно в таком виде

C++:
Expand Collapse Copy
    HANDLE proc_handle = 0; // тут получаешь дескриптор процесса

    std::uint32_t base = reinterpret_cast<std::uint32_t>(GetModuleHandleA("Engine.dll")) + 0x8a6ae4; // тут ты прибавляешь смещение к  базовому адресу модуля
    std::vector<std::uint32_t> offsets = { 0x9cc, 0x18, 0x30, 0x444, 0x4, 0x2fc, 0x8c };

    std::uint32_t result = base;

    for(auto& o : offsets)
    {
        ReadProcessMemory( proc_handle , reinterpret_cast< void** >( result + o ) , &result , sizeof( result ) , nullptr ); // тут в цикле считываешь каждое предыдущее значение + текущее смещение ( в этом и суть , смещение прибавляется не к стартовому адресу , а к новому адресу которой ты получаешь в результате всех операций перед текущим смещением)
    }
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а вы тоже юзаете ридпроцессмемори, когда можно напрямую читать, если ты и так юзаешь getmodulehandle?

А вы тоже в 4 утра сретее хуйню, когда видите всего лишь ебанный пример.Вы тоже на публику вкидываете свои познания в КОДИНГГЕЕЕЕ :roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga: Ты умеешь через звездочку адреса разыменовывать :forsenGun::FeelsBadMan:
 
это в длл только так.
что в длл? в длл ты юзаешь гетмодулхендл который ищет ТОЛЬКО в текущем процессе, а читаешь через рид процесс, когда можно напрямую из текущего процесса читать
А вы тоже в 4 утра сретее хуйню, когда видите всего лишь ебанный пример.Вы тоже на публику вкидываете свои познания в КОДИНГГЕЕЕЕ :roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga::roflanBuldiga: Ты умеешь через звездочку адреса разыменовывать :forsenGun::FeelsBadMan:
да правильно пусть человек сам учится что ему подсказывать то?
 
что в длл? в длл ты юзаешь гетмодулхендл который ищет ТОЛЬКО в текущем процессе, а читаешь через рид процесс, когда можно напрямую из текущего процесса читать

Мужик, тс просто проебался с GetModuleHandle, он же рассказал что работал с CE , очевидно он хочет прочитать экстернал память, я просто переписал его код полностью , поправив rpm
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
что в длл? в длл ты юзаешь гетмодулхендл который ищет ТОЛЬКО в текущем процессе, а читаешь через рид процесс, когда можно напрямую из текущего процесса читать
А, забыл про GetModuleHandle, ну лан, мой проеб,
Ну и как выше ответил invers1on, то чел может проебался с гетмодульхендлом и екстернал читает память??
 
да правильно пусть человек сам учится что ему подсказывать то?
1673058553207.png
 
DWORD hp = (DWORD)GetModuleHandleA("Engine.dll") + 0x8A6AE4;

Если это интернал и 0x8A6AE4 это смещение до значения здоровья, то

int hp = *(int*)((DWORD)(GetModuleHandleA("Engine.dll")) + 0x8A6AE4);
 
Последнее редактирование:
Назад
Сверху Снизу