Как обмануть мастервервер Valve?

Тема в разделе "Программирование / Скриптинг", создана пользователем Thomas, 14 май 2012.

  1. Thomas

    Thomas

    Сообщения:
    11
    Симпатии:
    0
    Для начала напишу, что задача, как я понимаю скорее всего будет в том, чтобы написать VSP-плагин (это чтобы тему не закинули в другой раздел).

    Итак, по теме: есть довольно большая проблема, и прошу помощи. Проблема заключается в том, что сервера HL2DM версии v1.0.0.12 не отображаются в списке, который выдают клиенту мастерсервера Valve. Движок тот же, что и у CSS v1.0.0.34, но сервера CSS, насколько мне известно, отображаются ,а HL2DM - почему-то нет.

    Задача - заставить отображаться. Насколько я знаю, engine.dll / engine_i486.so, engine_i686.so, engine_amd.so содержат функцию (название, предположительно - NET_SendPacket), генерирующую пакет с инфой о сервере, отправляемой мастерсерверу. Для того, чтобы мастервервер принял сервер - нужно подменить версию на последнюю.

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

    Есть один человек, котором все-таки удалось подменить версию сервера, причем довольно интересным способом - отредактировал engine.dll. Все, что удалось у него выяснить:
    alex: не все так просто
    alex: там нужно искать то место, где формируется ответ мастер-серверу, и менять адрес строки с версией
    alex: это можно сделать при помощи отладчика
    alex: задача усложняется тем, что все строки копируются по новым адресам при запуске. Во всяком случае в виндовой версии так

    Еще, нашел у Вальв формат пакета, который сервер отправляет мастерсерверу:
    https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol#Master_servers

    Сейчас я вижу несколько выходов из ситауции:

    - VSP-плагин, подменяющий функцию, если, конечно, это можно сделать плагином
    - Сниффер, который будет редактировать каждый передаваемый сервером пакет к мастерсерверу
    - Свой мастерсервер (это довольно непрактично)
    - SourceMod-плагин (по-моему невероятно, но я не знаю всех возможностей SM)

    Редактировать dll и so-шки я не учитываю, поскольку, по-моему, это нужно быть гениальным человеком, да и надо это делать с каждым апдейтом OrangeBox, которые зачастили в последнее время.

    Я снова не знаю в какую сторону лучше копать, поэтому прошу вашего совета.