Решено Адрес памяти(samp, c++)

Тема в разделе "Вопросы", создана пользователем DEsTR0Y, 8 июн 2018.

Статус темы:
Закрыта.
  1. DEsTR0Y

    DEsTR0Y Участник

    Регистрация:
    8 июн 2018
    Сообщения:
    14
    Симпатии:
    1
    Доброго времени суток. Недавно начал пробовать сделать какой-нибудь чит на С++ для crmp(samp 0.3e). Столкнулся с такой проблемой, не могу найти адрес кол-ва хп игрока, ведь каждый раз после перезапуска игры он меняется. Полазив в гугле, нашел CPed +0x540. Но как изменить значение? До этого менял значения при помощи *reinterpret_cast, с обычными адресами(0xB7CE50 к примеру) всё нормально получается, но как быть с адресами вроде CPed +0x***? В гугле и на форумах ничего толкового не нашел. Может кто-то подскажет, как меняются значения таких адресов или скинет простенький исходник такого чита/обучающий урок по этой теме(сам не нашел). Пробовал копаться в исходнике собейта, ничего из этого не вышло, слишком много функций, не понятно что откуда и зачем.
    P.S. делаю так: *reinterpret_cast<int *>(0xB7CE50) += 50;
    P.S.S. Античит во внимание не берем, мне бы хоть просто узнать как менять значения таких функций, без всех сложностей с обходом античита и т.д. Но если все-таки кто-то может объяснить как ещё и античит обойти, я против конечно же не буду.
    Заранее спасибо :)
     
  2. CleanLegend

    Всефорумный модератор

    Регистрация:
    28 мар 2013
    Сообщения:
    222
    Симпатии:
    248
    Cped = 0xB6F5F0;
    +0x540 это смещение от этого адреса
    0xB6F5F0 + 0x540
    Можешь использовать вот так:
    
    DWORD myhp = 0xB6F5F0 + 0x540;
    *reinterpret_cast<float *>(myhp) += 50;
    
     
    #2 CleanLegend, 8 июн 2018
    Последнее редактирование: 8 июн 2018
  3. Cookie doge

    Cookie doge Активный участник

    Регистрация:
    27 май 2018
    Сообщения:
    26
    Симпатии:
    7
    Зачем давать готовый код, если можно научить искать указатели


    Вроде норм объясняет, еще можешь глянуть канал GameHackLab

    Можешь себе жизнь не усложнять на начальных этапах, дай компилятору воли)
    *(int*)0xFFFFFFFF += 50;
     
    #3 Cookie doge, 8 июн 2018
    Последнее редактирование: 8 июн 2018
    DEsTR0Y, ZKelo и LaRossa нравится это.
  4. itsOkke

    itsOkke Потрачен

    Регистрация:
    12 апр 2018
    Сообщения:
    88
    Симпатии:
    39
    надо сначала указатель на CPed прочитать, а потом уже прибавлять 540
     
    Cookie doge и mkrn нравится это.
  5. mkrn

    mkrn Постоянный участник

    Регистрация:
    19 фев 2017
    Сообщения:
    50
    Симпатии:
    32
    еее

    ну ваще вот как бы ;d

    *reinterpret_cast<float *>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x540) += 50.0f;
    ну или проще, вот так

    DWORD addr = *(DWORD*)0xB7CE50;
    *(float*)(addr + 0x540) += 50.0f;
     
    #5 mkrn, 8 июн 2018
    Последнее редактирование: 8 июн 2018
    DEsTR0Y нравится это.
  6. DEsTR0Y

    DEsTR0Y Участник

    Регистрация:
    8 июн 2018
    Сообщения:
    14
    Симпатии:
    1
    Всем большое спасибо за помощь, получилось сделать способом из видео
     
Статус темы:
Закрыта.