Всем привет, давно не было актива, решил на скорую руку написать статью про геймхакинг.
В этой статье мы сделаем простой FakeAdmin для игры.
Из преимуществ:
Возможность врубать админскую дебагкамеру.
Возможность врубать админский ESP.
FakeAdmin не детектится внутриигровым анти-читом (Цербер), а благодаря технологиям DMA, мы обойдем основной анти-чит (EAC).
Для работы мы будем использовать библиотеку MemProcFS.
Для начала, я создал namespace, в котором объявил нужные переменные:
После, создал 2 темплейта, для записи и чтения памяти, это намного упростит работу с библиотекой:
Далее, нам нужно инициализировать библиотеку, я сделал это так:
Теперь получим Process ID и адрес GameAssembly.dll с которым мы будем работать:
После этого, можно начать работу, для начала, нам нужно прочитать адрес LocalPlayer'a и получить entity:
Остается только прочитать активные флаги и прибавить к ним флаг администратора:
Готово, теперь мы можем использовать дебаг камеру и есп.
Из-за последних обновлений, у меня трудности с созданием некоторых функций, по этому, если у кого-то есть опыт с этои игрой, напишите мне, я бы задал вам пару вопрос.
В этой статье мы сделаем простой FakeAdmin для игры.
Из преимуществ:
Возможность врубать админскую дебагкамеру.
Возможность врубать админский ESP.
FakeAdmin не детектится внутриигровым анти-читом (Цербер), а благодаря технологиям DMA, мы обойдем основной анти-чит (EAC).
Для работы мы будем использовать библиотеку MemProcFS.
Для начала, я создал namespace, в котором объявил нужные переменные:
C:
namespace globals
{
VMM_HANDLE hvmm;
DWORD pID;
uint64_t GameAssembly = NULL;
auto LocalPlayerOff = 50163840; //LocalPlayer_c*
auto PlayerFlags = 0x740; //BasePlayer.PlayerFlags playerFlags
}
После, создал 2 темплейта, для записи и чтения памяти, это намного упростит работу с библиотекой:
C:
template<typename T>
auto read(uint64_t Addr)
{
T buffer;
VMMDLL_MemRead(globals::hvmm, globals::pID, Addr, PBYTE(&buffer), sizeof(T));
return buffer;
}
template<typename T>
auto write(uint64_t Addr, T value)
{
VMMDLL_MemWrite(globals::hvmm, globals::pID, Addr, PBYTE(&value), sizeof(T));
}
Далее, нам нужно инициализировать библиотеку, я сделал это так:
C:
std::vector<LPSTR> args = { (LPSTR)"", (LPSTR)"-device", (LPSTR)"fpga" };
globals::hvmm = VMMDLL_Initialize(3, args.data());
Теперь получим Process ID и адрес GameAssembly.dll с которым мы будем работать:
C:
VMMDLL_PidGetFromName(globals::hvmm, (LPSTR)"rustclient.exe", &globals::pID);
globals::GameAssembly = VMMDLL_ProcessGetModuleBaseU(globals::hvmm, globals::pID, (LPSTR)"GameAssembly.dll");
После этого, можно начать работу, для начала, нам нужно прочитать адрес LocalPlayer'a и получить entity:
C:
auto LocalPlayer = read<uint64_t>(globals::GameAssembly + globals::LocalPlayerOff);
auto static_fields = read<uint64_t>(LocalPlayer + 0xB8);
auto ent = read<uint64_t>(static_fields + 0x0);
Остается только прочитать активные флаги и прибавить к ним флаг администратора:
C:
auto flags = read<int>(ent + globals::PlayerFlags);
auto nflags = flags | 4;
while (1)
{
write<int>(ent + globals::PlayerFlags, nflags);
Sleep(10);
}
Готово, теперь мы можем использовать дебаг камеру и есп.
Из-за последних обновлений, у меня трудности с созданием некоторых функций, по этому, если у кого-то есть опыт с этои игрой, напишите мне, я бы задал вам пару вопрос.