Если в одноименной игре вы промышляете грязными делишками, вас могут заблокировать. Вы всегда должны это учитывать и быть максимально осмотрительным. Но если вышло так, что вас уже забанили, но желание играть не пропало, и это был не основной профиль, то предлагаю ознакомиться с текстом ниже.
Блокировка профиля
Естественно, здесь не будут рассмотрены ограничения по типу - тайм аут и тд.,
только перманентная блокировка аккаунта и все что с ним связанно.
Когда происходит последнее, накрывают по двум направлением:
1. - Блокировка аккаунта;
2. - Блокировка пользователя Windows.
Отдельно стоит рассмотреть вариант блокировки за мультиводство (многооконную игру). Если вы читали соответствующую статью у меня на канале, то понимаете о чем идет речь. В таком случае, добавляется еще одно направление блокировки - IP.
Разносят все аккаунты которые были на данном IP адресе. А если вы очень сильно разозлите администрацию игры, прошерстят логи и снесут все аккаунты по всем прошлым IP адресам связанных профилей.
Мне не известны сроки хранения логов на серверах.
Поэтому, если вы занимаетесь темными делами, никогда не используйте один и тот же адрес для основного и левых профилей.
Обход блокировки пользователя Windows
В интернете есть способ обхода данного ограничения, а именно - запуск приложения от имени другой учетки Windows. Но лично меня подобный расклад не устраивает. Проблемы нужно решать в корне. Если вы со мной согласны, перейдем к делу.
Преграду нам создает идентификатор безопасности SID, преобразованную строку которого, игра отправляет на сервер, последний в ответ посылает нас в далекое эротическое путешествие.
Исправим это традиционно - пропатчим игру.
Для этого воспользуемся старым добрым hiew32.
Откройте файл warspear.exe в hiew32.
Переключитесь в HEX или Decode, для этого нажмите ENTER.
Затем откройте список импорта, для этого нажмите F8 затем F7.
Нужно найти функцию GetTokenInformation.
Для этого начните набирать ее название и она появится в списке.
После этого нажмите ENTER и ждите.
Функция GetTokenInformation имеет пять стековых параметров.
Нас интересует третий и четвертый сверху. Это указатель на место выгрузки соответствующей информации и ее тип. В данном случае указатель равен нулю, значит ничего не выгружается. Это пустой запрос длинны соответствующих данных чтобы выделить для них место. Такой вызов нас не интересует, переходим к следующему.
Нажимаем; SHIFT + F7.
Совсем рядом находится следующий вызов данной функции (красная рамка). Обращаем внимание на соответствующие параметры.
Адрес указан, тип данных - 1 [TOKEN_USER], то что надо.
Ниже находится функция ConvertSidToStringSid.
Она преобразовывает бинарный SID в ASCII строковый вид.
Как было сказано в начале, именно наш SID создает нам проблемы.
Изменить его логичнее когда он еще в бинарном виде.
Модифицируем код таким образом, чтобы вносить в него изменения по ходу выполнения программы. Изменения будут носить некоторый случайный характер.
Переписывать будем участок в желтой рамке.
Установите курсор в начало желтой рамки (инструкция test).
Нажмите F3, затем F2.
Поочередно вписывайте туда следующие строки, после каждой нажимайте ENTER:
lea eax,[ebp-10h]
psuh eax
mov eax,[eax+0ch]
xor ecx,eax
mov [eax+18h],ecx
push eax
nop
После внесенных изменений, нажмите F9 чтобы сохранить.
Теперь, каждый раз при выполнении этого кода в последнее двойное слово SIB, будет помещено значение сформированное противопоставлением двух регистров (ecx и eax), которые при каждом новом запуске приложения из за виртуальной адресации будут разные.
Единственный недостаток этого способа заключается в том, что каждый раз при запуске игры придется вводить пароль. Связанно это с тем, что автовход ассоциируется с текущим SID, его хэши хранятся в ws_config.xml по адресу %USERNAME%\AppData\Local\Warspear Online\
Учитывайте это при использовании "безымянных" аккаунтов. После перезапуска, получить к ним доступ будет невозможно
После обновления игры, чтобы долго не возиться, используйте
сигнатуру поиска и опкод для HEX редакторов:
Сигнатура - 8B 55 F4 52 FF 15 18 A0 AD 00
Опкод - 8D 45 F0 50 8B 40 0C 33 C8 89 48 18 50 90
Вписывайте опкод сразу после сигнатуры!