- 111
- 19
- Версия MoonLoader
- .027.0-preview
Всем привет. Недавно начал изучать неактуальные скрипты, по типу обходов для мобильного проекта. Суть скрипта в том, что скрипт дает возможность зайти в аккаунт с ПК. В принципе все понятно и логично, но есть вещи, которыми я задаюсь вопросом.
Два этих скрипта связывает одно - они отправляют пакет массива шестнадцатеричных значений.
Я долгое время ломал голову, зачем и почему он решил отправить рандомные цифры, и кажется, я понял, но не до конца.
Как я понял, при авторизации, скрипт подменяет значение joinAuthKey на '10EF75E3F7A702B75F29D501677C33B6B4EFA8CA999'. А массивы - это как раз-таки этот же joinAuthKey, но в шестнад. значении. Но главный вопрос - зачем эти скрипты отправляют эти массивы при попытке обхода? Я для теста убирал логику отправки, и ничего не менялось.
Так же, каким образом человек смог закодировать строку '10EF75E3F7A702B75F29D501677C33B6B4EFA8CA999' в шеснад. значения. Я просмотрел множество сайтов, там нельзя получить именно такой вид значений, как на первом обходе.
Так же при попытке обхода, скрипт подменяет challengeResponse2 на строку 'sys108rev100', что на удивление, дает хоть какие-то результаты. При входе на сервер пишет, что установлен старый клиент, но каким образом эта строка дает серверу понять, что я не с ПК, но у меня установлен старый клиент. Обычно, клиент отправляет одинаковые цифры в challengeResponse2 как в первом challengeResponse, но никак не строку.
Возвращаюсь к вопросу с декодировке шестнад. значений во втором обходе, а именно здесь:
В этом участке коде я понял, что разработчик обхода решил отправить строку 'sys108rev100' в ASCII. Но не понимаю одного - почему он решил отправить этот РПС пакет именно таким образом, а не обычной строкой, ведь результат - тот же самый. Я проверял.
Предпоследний вопрос, который мне не дает нормально спать:
В первым обходе есть такой интересный участок кода:
Здесь в принципе все понятно, но я НИГДЕ НЕ НАШЕЛ ИНФОРМАЦИИ ОБ RPC 222. Я обыскал весь интернет от и до, даже в игре проверял, какие RPC пакеты отправляет мне сервер, и этого загадочного 222-го RPC нигде нет. И это не может быть ошибкой разработчика, на то есть 2 причины.
1 = этот обход когда-то работал, пока его не пофиксили;
2 = на форуме есть еще одна тема, где человек принимал этот загадочный RPC. Ссылка
Последний вопрос:
В двух обходах есть такой участок кода:
В принципе все понятно, человек подменяет битстрим RPC 'ClientCheck'
Но, он записывает значение 388, во второй параметр битСтрима UINT32 address. Зачем и главное почему? Ведь клиент отправляет значение, которое меняется с каждым перезаходом в игру. Проанализировав отправляемые значения, я пришел к выводу, что чем больше прошло с рестарта сервера, тем больше отправляемое значение.
Вот список, который я ввел в течение дня:
Как вы видите, чем больше времени прошло, тем больше значение. Это какой-то отсчет с рестарта, но в обходах отправляется значение 388. Зачем :/
Пожалуйста, не бейте сильно, что задал столько вопросов, но насчет этого катастрофически мало информации, и я устал гадать(
Весь код обхода(Первый скрипт):
script_name('Mordor Bypass')
script_version('2.2-FINAL')
script_author('ValarDahaelis')
local sampev = require('lib.samp.events')
local dat = {0xDE, 0xC2, 0x17, 0x5, 0x17, 0x17, 0x5, 0x36, 0x34, 0xB1, 0x23, 0xAA, 0x20, 0xA9, 0xA0, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x29, 0xA0, 0xA6, 0xA8, 0x17, 0x39, 0xB7, 0x80, 0x29, 0xA1, 0xAA, 0x2B,
0xA7, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x31, 0x30, 0xB9, 0xB9, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x39, 0xB0, 0xB6, 0xB8, 0x27, 0xA7, 0x22, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x2A,
0x37, 0xBA, 0xB1, 0xB4, 0x29, 0xB2, 0xB7, 0x39, 0xB2, 0xA9, 0xA2, 0x25, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x24, 0xB6, 0xB6, 0xA2, 0xB6, 0xBA, 0xB6, 0x30, 0xBA, 0x37, 0xB9, 0x25, 0x27, 0xA7, 0x22,
0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x23, 0xAA, 0x20, 0xA9, 0xA0, 0xA7, 0xA7, 0x22, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x29, 0xA1, 0xA7, 0xA7, 0x22, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x0}
function main()
while not isSampAvailable() or not isSampfuncsLoaded() do wait(0) end
local ip, port = sampGetCurrentServerAddress()
sampAddChatMessage('{BE2D2D}Обход для Mordor RP v2.2-FINAL загружен!', -1)
local res, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
while true do
wait(0)
end
end
function sampev.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, unknown)
local xui = raknetNewBitStream()
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Начнаем обходить...', -1)
raknetBitStreamWriteInt32(xui, 4057)
raknetBitStreamWriteInt8(xui, 1)
raknetBitStreamWriteInt8(xui, nickname:len())
raknetBitStreamWriteString(xui, nickname)
raknetBitStreamWriteInt32(xui, challengeResponse)
raknetBitStreamWriteInt8(xui, 43)
raknetBitStreamWriteString(xui, '10EF75E3F7A702B75F29D501677C33B6B4EFA8CA999')
raknetBitStreamWriteInt8(xui, clientVer:len())
raknetBitStreamWriteString(xui, clientVer)
raknetBitStreamWriteInt8(xui, 12)
raknetBitStreamWriteString(xui, "sys108rev100")
raknetSendRpcEx(25, xui, 1, 8, 0, false)
raknetDeleteBitStream(xui)
return false
end
-- sys108rev100
function onReceiveRpc(id, bitStream)
if id == 222 then
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обходим...', -1)
local xui = raknetNewBitStream()
for i = 1, 135 do
raknetBitStreamWriteInt8(xui, dat[i])
end
raknetSendBitStreamEx(xui, 1, 8, 0)
raknetDeleteBitStream(xui)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обошли', -1)
end
end
function onSendRpc(id, bitStream, priority, reliability, orderingChannel, shiftTs)
if id == 103 then
local xui = raknetNewBitStream()
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Ещё раз обходим...', -1)
raknetBitStreamWriteInt8(xui, 72)
raknetBitStreamWriteInt32(xui, 388)
raknetBitStreamWriteInt16(xui, 0)
raknetSendRpcEx(103, xui, 1, 9, 0, false)
raknetDeleteBitStream(xui)
lua_thread.create(function()
wait(10000)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обход v2.2-FINAL сработал!', -1)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обход создан ValarDahaelis', -1)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Официальная тема скрипта: blast.hk/threads/95285', -1)
end)
return false
end
end
Весь кода второго обхода:
require "lib.sampfuncs"
require "lib.moonloader"
local event = require('lib.samp.events')
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
sampAddChatMessage('{000FF}Oбход загружен', -1)
while true do
wait(0)
end
end
function event.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, unknown)
ip, port = sampGetCurrentServerAddress()
if ip == "95.181.158.44" or ip == "95.181.158.50" or ip == "95.181.158.47" or ip == "95.181.158.42" or ip:find("mordor") then
local bs = raknetNewBitStream()
raknetBitStreamWriteInt32(bs, 4057)
raknetBitStreamWriteInt8(bs, 1)
nicknameLen = string.len(nickname)
raknetBitStreamWriteInt8(bs, nicknameLen)
raknetBitStreamWriteString(bs, nickname)
raknetBitStreamWriteInt32(bs, challengeResponse)
raknetBitStreamWriteInt8(bs, 43)
raknetBitStreamWriteString(bs, "10EF75E3F7A702B75F29D501677C33B6B4EFA8CA999")
raknetBitStreamWriteInt8(bs, 5)
raknetBitStreamWriteString(bs, "0.3.7")
raknetBitStreamWriteInt8(bs, 12)
raknetBitStreamWriteInt8(bs, 115)
raknetBitStreamWriteInt8(bs, 121)
raknetBitStreamWriteInt8(bs, 115)
raknetBitStreamWriteInt8(bs, 50)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, 114)
raknetBitStreamWriteInt8(bs, 101)
raknetBitStreamWriteInt8(bs, 118)
raknetBitStreamWriteInt8(bs, 49)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, 48)
raknetSendRpc(25, bs)
raknetDeleteBitStream(bs)
local bs = raknetNewBitStream()
raknetBitStreamWriteInt8(bs, -34)
raknetBitStreamWriteInt8(bs, -62)
raknetBitStreamWriteInt8(bs, 5)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 41)
raknetBitStreamWriteInt8(bs, -95)
raknetBitStreamWriteInt8(bs, -96)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, 50)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 49)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, -71)
raknetBitStreamWriteInt8(bs, -71)
raknetBitStreamWriteInt8(bs, -105)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -80)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -72)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 35)
raknetBitStreamWriteInt8(bs, -86)
raknetBitStreamWriteInt8(bs, 32)
raknetBitStreamWriteInt8(bs, -87)
raknetBitStreamWriteInt8(bs, -96)
raknetBitStreamWriteInt8(bs, -105)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 36)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -94)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -70)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, -70)
raknetBitStreamWriteInt8(bs, 55)
raknetBitStreamWriteInt8(bs, -71)
raknetBitStreamWriteInt8(bs, 37)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 5)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 42)
raknetBitStreamWriteInt8(bs, 55)
raknetBitStreamWriteInt8(bs, -70)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, -76)
raknetBitStreamWriteInt8(bs, 41)
raknetBitStreamWriteInt8(bs, -78)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -78)
raknetBitStreamWriteInt8(bs, -87)
raknetBitStreamWriteInt8(bs, -94)
raknetBitStreamWriteInt8(bs, 37)
raknetBitStreamWriteInt8(bs, -105)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 23)
raknetSendBitStream(bs)
sampAddChatMessage(string.format("Oбход сработал"), 0x40FF40)
return false
else
return true
end
end
function event.onSendClientCheckResponse(type, arg, response)
if (type == 72) and (ip == "95.181.158.44" or ip == "95.181.158.50" or ip == "95.181.158.47" or ip == "95.181.158.42" or ip:find("mordor")) then
ip, port = sampGetCurrentServerAddress()
local bs = raknetNewBitStream()
raknetBitStreamWriteInt8(bs, 72)
raknetBitStreamWriteInt32(bs, 388)
raknetBitStreamWriteInt32(bs, 0)
raknetSendRpc(103, bs)
raknetDeleteBitStream(bs)
return false
else
return true
end
end
Два этих скрипта связывает одно - они отправляют пакет массива шестнадцатеричных значений.
Массив:
local dat = {0xDE, 0xC2, 0x17, 0x5, 0x17, 0x17, 0x5, 0x36, 0x34, 0xB1, 0x23, 0xAA, 0x20, 0xA9, 0xA0, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x29, 0xA0, 0xA6, 0xA8, 0x17, 0x39, 0xB7, 0x80, 0x29, 0xA1, 0xAA, 0x2B,
0xA7, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x31, 0x30, 0xB9, 0xB9, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x39, 0xB0, 0xB6, 0xB8, 0x27, 0xA7, 0x22, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x2A,
0x37, 0xBA, 0xB1, 0xB4, 0x29, 0xB2, 0xB7, 0x39, 0xB2, 0xA9, 0xA2, 0x25, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x24, 0xB6, 0xB6, 0xA2, 0xB6, 0xBA, 0xB6, 0x30, 0xBA, 0x37, 0xB9, 0x25, 0x27, 0xA7, 0x22,
0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x23, 0xAA, 0x20, 0xA9, 0xA0, 0xA7, 0xA7, 0x22, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x34, 0xB1, 0x29, 0xA1, 0xA7, 0xA7, 0x22, 0x97, 0x39, 0xB7, 0x85, 0x36, 0x0}
--второй обход:
raknetBitStreamWriteInt8(bs, -34)
raknetBitStreamWriteInt8(bs, -62)
raknetBitStreamWriteInt8(bs, 5)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 41)
raknetBitStreamWriteInt8(bs, -95)
raknetBitStreamWriteInt8(bs, -96)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, 50)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 49)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, -71)
raknetBitStreamWriteInt8(bs, -71)
raknetBitStreamWriteInt8(bs, -105)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -80)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -72)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 35)
raknetBitStreamWriteInt8(bs, -86)
raknetBitStreamWriteInt8(bs, 32)
raknetBitStreamWriteInt8(bs, -87)
raknetBitStreamWriteInt8(bs, -96)
raknetBitStreamWriteInt8(bs, -105)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 36)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -94)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, -70)
raknetBitStreamWriteInt8(bs, -74)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, -70)
raknetBitStreamWriteInt8(bs, 55)
raknetBitStreamWriteInt8(bs, -71)
raknetBitStreamWriteInt8(bs, 37)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 23)
raknetBitStreamWriteInt8(bs, 5)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 52)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, 42)
raknetBitStreamWriteInt8(bs, 55)
raknetBitStreamWriteInt8(bs, -70)
raknetBitStreamWriteInt8(bs, -79)
raknetBitStreamWriteInt8(bs, -76)
raknetBitStreamWriteInt8(bs, 41)
raknetBitStreamWriteInt8(bs, -78)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -78)
raknetBitStreamWriteInt8(bs, -87)
raknetBitStreamWriteInt8(bs, -94)
raknetBitStreamWriteInt8(bs, 37)
raknetBitStreamWriteInt8(bs, -105)
raknetBitStreamWriteInt8(bs, 57)
raknetBitStreamWriteInt8(bs, -73)
raknetBitStreamWriteInt8(bs, -123)
raknetBitStreamWriteInt8(bs, 23)
--разработчик второго обхода решил сделать так, извиняюсь
Я долгое время ломал голову, зачем и почему он решил отправить рандомные цифры, и кажется, я понял, но не до конца.
Как я понял, при авторизации, скрипт подменяет значение joinAuthKey на '10EF75E3F7A702B75F29D501677C33B6B4EFA8CA999'. А массивы - это как раз-таки этот же joinAuthKey, но в шестнад. значении. Но главный вопрос - зачем эти скрипты отправляют эти массивы при попытке обхода? Я для теста убирал логику отправки, и ничего не менялось.
Так же, каким образом человек смог закодировать строку '10EF75E3F7A702B75F29D501677C33B6B4EFA8CA999' в шеснад. значения. Я просмотрел множество сайтов, там нельзя получить именно такой вид значений, как на первом обходе.
Так же при попытке обхода, скрипт подменяет challengeResponse2 на строку 'sys108rev100', что на удивление, дает хоть какие-то результаты. При входе на сервер пишет, что установлен старый клиент, но каким образом эта строка дает серверу понять, что я не с ПК, но у меня установлен старый клиент. Обычно, клиент отправляет одинаковые цифры в challengeResponse2 как в первом challengeResponse, но никак не строку.
Возвращаюсь к вопросу с декодировке шестнад. значений во втором обходе, а именно здесь:
Тест 'sys108rev100' в ASCII:
raknetBitStreamWriteInt8(bs, 115)
raknetBitStreamWriteInt8(bs, 121)
raknetBitStreamWriteInt8(bs, 115)
raknetBitStreamWriteInt8(bs, 49)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, 56)
raknetBitStreamWriteInt8(bs, 114)
raknetBitStreamWriteInt8(bs, 101)
raknetBitStreamWriteInt8(bs, 118)
raknetBitStreamWriteInt8(bs, 49)
raknetBitStreamWriteInt8(bs, 48)
raknetBitStreamWriteInt8(bs, 48)
Предпоследний вопрос, который мне не дает нормально спать:
В первым обходе есть такой интересный участок кода:
onReceiveRpc:
function onReceiveRpc(id, bitStream)
if id == 222 then
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обходим...', -1)
local xui = raknetNewBitStream()
for i = 1, 135 do
raknetBitStreamWriteInt8(xui, dat[i])
end
raknetSendBitStreamEx(xui, 1, 8, 0)
raknetDeleteBitStream(xui)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обошли', -1)
end
end
Здесь в принципе все понятно, но я НИГДЕ НЕ НАШЕЛ ИНФОРМАЦИИ ОБ RPC 222. Я обыскал весь интернет от и до, даже в игре проверял, какие RPC пакеты отправляет мне сервер, и этого загадочного 222-го RPC нигде нет. И это не может быть ошибкой разработчика, на то есть 2 причины.
1 = этот обход когда-то работал, пока его не пофиксили;
2 = на форуме есть еще одна тема, где человек принимал этот загадочный RPC. Ссылка
Последний вопрос:
В двух обходах есть такой участок кода:
Участок кода с RPC 103:
function onSendRpc(id, bitStream, priority, reliability, orderingChannel, shiftTs)
if id == 103 then
local xui = raknetNewBitStream()
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Ещё раз обходим...', -1)
raknetBitStreamWriteInt8(xui, 72)
raknetBitStreamWriteInt32(xui, 388)
raknetBitStreamWriteInt16(xui, 0)
raknetSendRpcEx(103, xui, 1, 9, 0, false)
raknetDeleteBitStream(xui)
lua_thread.create(function()
wait(10000)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обход v2.2-FINAL сработал!', -1)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Обход создан ValarDahaelis', -1)
sampAddChatMessage('{BE2D2D}[Mordor] {ffffff}Официальная тема скрипта: blast.hk/threads/95285', -1)
end)
return false
end
end
Но, он записывает значение 388, во второй параметр битСтрима UINT32 address. Зачем и главное почему? Ведь клиент отправляет значение, которое меняется с каждым перезаходом в игру. Проанализировав отправляемые значения, я пришел к выводу, что чем больше прошло с рестарта сервера, тем больше отправляемое значение.
Вот список, который я ввел в течение дня:
Cписок:
-- 72 86376263 0
-- 72 86558730 0
-- 72 86826894 0
-- 72 86847893 0
-- 72 86924920 0
-- 72 86984796 0
-- 72 87039860 0
-- 87039860
-- 72 87353986 0
-- 72 87665592 0
-- 72 88212382 0 0
-- 72 88247980 0 0
-- 72 88267847 0 0
-- 72 91975959 0 0
-- 72 235692928 0 0 | Sat Jan 6 09:24:40 2024
Пожалуйста, не бейте сильно, что задал столько вопросов, но насчет этого катастрофически мало информации, и я устал гадать(