Возможно ли при помощи мемхака сделать так, чтобы можно было видеть кулдауны способностей союзников? Как в некоторых мапхаках.

d1stats.ru/files/DotAAllstarsHelper688v15.zip ( DracoL1ch, Это де можно выкладывать?)
JackFastGame, я уже всё забыл, но всё возможно - нужен мемхак 1 версии, там есть функции, которые ссылаются на ту самую ExtraGameDll, и всё работает
`
ОЖИДАНИЕ РЕКЛАМЫ...
16
в библиотеке DotAAllstarsHelper это есть, нужно лишь присобачить мемхак и функции для вызова её)
33
d1stats.ru/files/DotAAllstarsHelper688v15.zip ( DracoL1ch, Это де можно выкладывать?)
JackFastGame, я уже всё забыл, но всё возможно - нужен мемхак 1 версии, там есть функции, которые ссылаются на ту самую ExtraGameDll, и всё работает
Принятый ответ
32
Делается записью в определенные адресса памяти значений, но нужно сделать change offset protection, адресса и значения можите посмотреть в новом антихаке unryze'a как и код который это делает.
19
d1stats.ru/files/DotAAllstarsHelper688v15.zip ( DracoL1ch, Это де можно выкладывать?)
JackFastGame, я уже всё забыл, но всё возможно - нужен мемхак 1 версии, там есть функции, которые ссылаются на ту самую ExtraGameDll, и всё работает
Если собираетесь писать свой мемхак, использующий ту библиотеку, то с помощью IDA смотрите название функций, её параметры и тип данных для возврата, а потом в коде своего мемхака выполняете примерно такие действия:
// Если библиотека уже подгружена, то используйте это:
uintptr_t MemHackFunction = (uintptr_t)GetProcAddress(GetModuleHandle("Название DLL, содержащего функцию"), "Название функции");
// а иначе:
uintptr_t MemHackFunction = (uintptr_t)GetProcAddress(LoadLibraryA("Название DLL, содержащего функцию"), "Название функции");
(reinterpret_cast<Тип возвращаемых данных(CALLBACK*)(Типы данных параметров, если параметры есть)>(MemHackFunction))(Параметры);
Код написан на C++.

quq_CCCP:
Делается записью в определенные адресса памяти значений, но нужно сделать change offset protection, адресса и значения можите посмотреть в новом антихаке unryze'a как и код который это делает.
Если нужно просто прочитать память, достаточно и обычной уккзателя:
Нужный тип данных x = *(Нужный тип данных&)(GetModuleHandleA("Game.dll") + смещение);
Ну а если так надо изменить память, то можно использовать свзяку VirtualProtect для изменения защиты и memcpy/memset для записи, конечно, можно обойтись теми же указателями.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.