@nnGot583
c#, iOS дизассемблирование

Как защититься от метода CloseConnection?

Один умный человек в игре написал чит, который отключает игроков от сервера.

Я раздобыл исходный код этого чита:
bool *(*CloseConnection)(void *player);
void *(*player)();
bool *(*SetMasterClient)(void *instance);monoArray<void**> *(*PhotonNetwork_playerListothers)();
void Pointers(){
    AddFireworks = (void(*)(int)) getAbsoluteAddress(targetLibName, 0x1112AA4);
    PhotonNetwork_playerListothers = (monoArray<void**> *(*)()) getAbsoluteAddress("libil2cpp.so", 0x176169C);
    CloseConnection = (bool *(*)(void*)) getAbsoluteAddress("libil2cpp.so", 0x1766844);//test
    SetMasterClient = (bool *(*)(void*)) getAbsoluteAddress("libil2cpp.so", 0x1766AB8);
    player = (void *(*)()) getAbsoluteAddress("libil2cpp.so", 0x176130C);

void (*old_PlayerUpdate)(void *instance);
void PlayerUpdate(void *instance) {
    if (instance != nullptr) {
        auto photonplayers = PhotonNetwork_playerListothers();
        if (kickall) {
            SetMasterClient(player());
            for (int i = 0; i < photonplayers->getLength(); ++i) {
                auto photonplayer = photonplayers->getPointer()[i];
                CloseConnection(photonplayer);}


Скриншот фрагмента кода удален модератором.
В нем "читер" сначала выдает себе права MasterClient от сервера и с помощью цикла проходится по всем игрокам на сервере, закидывая их в метод CloseConnection. После этого у игроков пропадает связь с сервером.

Можно ли защититься от этого и как?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
Griboks
@Griboks Куратор тега Unity
В нем "читер" сначала выдает себе права MasterClient от сервера

Вы ошиблись, читер не может получить права от сервера - у вас нет сервера, у вас есть клиенты и главный клиент. Для решения проблемы достаточно перевести архитектуру в клиенты + выделенный сервер.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MvcBox
@MvcBox
Software Engineer [C/C++/JS(for Node.js)/etc]
Можно ли защититься от этого и как?

Нормально реализовать серверную часть. Судя по Вашему описанию это какое-то решето, а не сервер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы