[RakSamp Lite] SillyFix

Ulong

Диванный критик
Автор темы
Проверенный
94
551
Куда без фиксов осенью? Патч который закрывает еще два метода детекта RakSAMP Lite
  • fixPrePingPacket - убирает лишний вызов PingServer перед подключением, самп сразу шлёт ID_OPEN_CONNECTION_REQUEST без предварительного ID_PING_OPEN_CONNECTIONS
  • setInteriorFix - перехватывает входящий RPC смены интерьера и блокирует его обработку если целевой interiorid совпадает с текущим, как в оригинальном сампе
Установка: закинуть файл в /scripts/libs и подключить его в скрипте



prePingPacket:
Поиск по сигнатуре 6A 01 0F B7 F0 8B 07 56 53 55 FF 50 28 8B 07 8B CF 6A 05 6A 00 56, смещаемся на 10 байт и попадаем на вызов PingServer
Заменяем эти три байта на 83 C4 10 (add esp, 10h), инструкция освобождает из стека 16 байт
Видимо источником отправки PingServer стала тема: [RakSamp] Пингуем сервер

setInteriorFix:
Ищем по сигнатуре начало обработчика SetPlayerInterior, смещаемся на 38 байт от начала функции и читаем адрес глобальной переменной, в которой клиент хранит текущий interiorid. Ставим jmp хук на вход функции, получаем указатель на bitstream, читаем новый interiorid и возвращаем позицию чтения на исходную позицию
Сравниваем id нового интерьера и текущего, если они идентичны - оригинальная функция не вызывается
prePingPacket коротко: хукаем ProcessNetworkPacket для перехвата сырого трафика. Там тихо, не спеша, без суеты разбираем служебные пакеты
адреса для примера:
Win:
  • R2 samp-server.exe base + 0x567F0
  • OMP v1.5.8.3079 LegacyNetwork base + 0x39660
Linux:
  • R2 samp03svr 0x8073280
  • OMP v1.5.8.3079 LegacyNetwork base + 0x114EB0

setInterior: ставим для примера в OnPlayerConnect нулевой интерьер игроку. В OnPlayerInteriorChange проверяем если newinteriorid == oldinteriorid - это бот
 

Вложения

  • silly_fix.dll
    21 KB · Просмотры: 12