Другое С/С++ Вопрос - Ответ

legendabrn

Известный
Проверенный
120
170
а как надо?

Как реализовать? https://www.blast.hk/threads/12223/
Вот вариант получше.

C++:
auto speedHackMenuMap(const unsigned __int32 ui32Status, const float *pZoomSpeed, const float *pMoveSpeed) -> void {
    /* CMenuManager::AdditionalOptionInput */
    if (ui32Status) {
        patchAddress(reinterpret_cast<void *>(0x57769A), &pZoomSpeed, 0x4);
        patchAddress(reinterpret_cast<void *>(0x5779C9), &pZoomSpeed, 0x4);
        patchAddress(reinterpret_cast<void *>(0x578652), &pMoveSpeed, 0x4);
        patchAddress(reinterpret_cast<void *>(0x5784B7), &pMoveSpeed, 0x4);
        patchAddress(reinterpret_cast<void *>(0x577E72), &pMoveSpeed, 0x4);
        patchAddress(reinterpret_cast<void *>(0x578322), &pMoveSpeed, 0x4);
    } else {
        patchAddress(reinterpret_cast<void *>(0x57769A), "\xE4\x53\x86\x00", 0x4);
        patchAddress(reinterpret_cast<void *>(0x5779C9), "\xE4\x53\x86\x00", 0x4);
        patchAddress(reinterpret_cast<void *>(0x578652), "\x48\x8F\x85\x00", 0x4);
        patchAddress(reinterpret_cast<void *>(0x5784B7), "\x48\x8F\x85\x00", 0x4);
        patchAddress(reinterpret_cast<void *>(0x577E72), "\x48\x8F\x85\x00", 0x4);
        patchAddress(reinterpret_cast<void *>(0x578322), "\x48\x8F\x85\x00", 0x4);
    } return;
}
 
У

Удалённый пользователь 448549

Гость
123:
enum test
{
    one = 1,
    two = 2
};
Подскажите пожалуйста, как вывести "one" или "two"
 

kyrtion

Известный
998
365
Предлагай плиз
чего начинать изучать с нуля С++? книжечки, сайты, видео
луа знаю
 
  • Bug
Реакции: Izvinisb

loganhackerdff

Известный
868
519
Например таким костылем: https://github.com/TsudaKageyu/minhook/blob/4a455528f61b5a375b1f9d44e7d296d47f18bb18/src/hook.c#L897
нормального метода не существует(добро пожаловать в C++)
UPD:
ну или вот:
или тут:
Извините меня, https://github.com/Neargye/nameof
 

TheD1sl1ke

Новичок
15
1
Всем привет. Недавно возникла потребность в чтении адресов памяти формата ProcessName.exe + abc (где abc - адрес памяти). Вот пример такого адреса памяти:
1635429827202.png


Раньше, для чтения обычных адресов памяти, я использовал ReadProcessMemory, но как использовать его в данной ситуации я не знаю. Заранее благодарю за помощь.
 

4el0ve4ik

Известный
Всефорумный модератор
1,550
1,343
Всем привет. Недавно возникла потребность в чтении адресов памяти формата ProcessName.exe + abc (где abc - адрес памяти). Вот пример такого адреса памяти:
Посмотреть вложение 119447

Раньше, для чтения обычных адресов памяти, я использовал ReadProcessMemory, но как использовать его в данной ситуации я не знаю. Заранее благодарю за помощь.
Если у игры адрес статичный, то просто float abc = *reinterpret_cast<float*>(0x1412AD4);
либо использовать GetModuleHandle(0) для определения базового адреса и использовать
unsigned long base = *reinterpret_cast<unsigned long*>(GetModuleHandle(0));
float abc = *reinterpret_cast<float*>(base+0x1412AD4);
 

TheD1sl1ke

Новичок
15
1
Если у игры адрес статичный, то просто float abc = *reinterpret_cast<float*>(0x1412AD4);
либо использовать GetModuleHandle(0) для определения базового адреса и использовать
unsigned long base = *reinterpret_cast<unsigned long*>(GetModuleHandle(0));
float abc = *reinterpret_cast<float*>(base+0x1412AD4);
Кажется это не мой случай, то что вы написали актуально для .dll, мне же требуется чтение без инжекта сторонних файлов в игру (external).
 

EclipsedFlow

Известный
Проверенный
1,047
476
Как можно записать подобное в С++ ?
Lua:
sampRegisterChatCommand('hello', function()
    -- Блок выполнения после ввода команды
end)

-- Чтобы не создавать отдельно функцию для обработки, как можно записать подобное на C++
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,746
4,831
Как можно записать подобное в С++ ?
Lua:
sampRegisterChatCommand('hello', function()
    -- Блок выполнения после ввода команды
end)

-- Чтобы не создавать отдельно функцию для обработки, как можно записать подобное на C++
C++:
sampapi::v037r3::RefInput()->AddCommand("huy", [](const char* arg) { /* Блок выполнения после ввода команды */ });