- 94
- 551
Куда без фиксов осенью? Патч который закрывает еще два метода детекта RakSAMP Lite
- fixPrePingPacket - убирает лишний вызов PingServer перед подключением, самп сразу шлёт ID_OPEN_CONNECTION_REQUEST без предварительного ID_PING_OPEN_CONNECTIONS
- setInteriorFix - перехватывает входящий RPC смены интерьера и блокирует его обработку если целевой interiorid совпадает с текущим, как в оригинальном сампе
prePingPacket:
Поиск по сигнатуре
Заменяем эти три байта на
Видимо источником отправки PingServer стала тема: [RakSamp] Пингуем сервер
setInteriorFix:
Ищем по сигнатуре начало обработчика SetPlayerInterior, смещаемся на 38 байт от начала функции и читаем адрес глобальной переменной, в которой клиент хранит текущий interiorid. Ставим jmp хук на вход функции, получаем указатель на bitstream, читаем новый interiorid и возвращаем позицию чтения на исходную позицию
Сравниваем id нового интерьера и текущего, если они идентичны - оригинальная функция не вызывается
Поиск по сигнатуре
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:
setInterior: ставим для примера в OnPlayerConnect нулевой интерьер игроку. В OnPlayerInteriorChange проверяем если newinteriorid == oldinteriorid - это бот
адреса для примера:
Win:
- R2 samp-server.exe base +
0x567F0 - OMP v1.5.8.3079 LegacyNetwork base +
0x39660
- R2 samp03svr
0x8073280 - OMP v1.5.8.3079 LegacyNetwork base +
0x114EB0
setInterior: ставим для примера в OnPlayerConnect нулевой интерьер игроку. В OnPlayerInteriorChange проверяем если newinteriorid == oldinteriorid - это бот