Re: Warning: PlayerDialogResponse crash exploit -
dimonml - 05.05.2012
Помниться мне Windows NT 4.0 Server настроенный по требованиям безопасности американских военных (не помню точное название документа) тоже легко задошевали через логи (там одно из требований было, чтобы ОС переставала работать, если не может записать лог. Вот ей что-то по сети слали, чтобы винда должна была писать лог, но не очень критичное, чтобы этого кто-то заметил. И ждали пока кончиться место на диске). Вот что значит, винда настроенная любителями - американскими военными
Вообще хочется заметить, что в любой мало-мальски большой и используемой сотнями людей программе будут находить ошибки безопасности. Для тех, кто далек от программирования, еще раз подчеркиваю,
в любой программе.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 05.05.2012
Quote:
Вот что значит, винда настроенная любителями - американскими военными
|
Самого убивает. "Крутые американские программисты" считают, что если они настроили сервер, то он непробиваем. Ага, как-же. Я конечно согласен, что и у нас такие есть, и у них есть настоящие специалисты, но уж слишком много у них "кулхацкеров".
Вообще самп тоже страдает прямыми руками своих создателей. Остается только радоваться, что самп все еще разрабатывают.
Re: Warning: PlayerDialogResponse crash exploit -
Roman_Gazizov - 07.05.2012
Решение найдено, решение защищает как от данной DOS атаки, как и от многих других. Делаем таймер на 10 секунд с повтарением и вставляем туда
for (new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
}
else
{
Kick(i);
}
}
Работает 100%
Если ресурсы сервера позволяют, можно вместо MAX_PLAYERS вставить 70000
Re: Warning: PlayerDialogResponse crash exploit -
DartfoL - 07.05.2012
Это защита от невидимости, она конечно хорошая, но будет давать нагрузку на сервер. И не вижу смысла туда 70000 ставить
Re: Warning: PlayerDialogResponse crash exploit -
MIASO - 07.05.2012
Quote:
Originally Posted by Roman_Gazizov
for (new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
}
else
{
Kick(i);
}
}
|
Проще написать так:
for (new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))
{
Kick(i);
}
}
Quote:
Originally Posted by Roman_Gazizov
Если ресурсы сервера позволяют, можно вместо MAX_PLAYERS вставить 70000
|
Тогда уж 65535
Re: Warning: PlayerDialogResponse crash exploit -
iEnemY - 07.05.2012
Давайте мыслить здраво, и писать хотя бы вот так
pawn Код:
for (new i = 0; i < GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) Kick(i);
}
Или я что-то пропустил, и например при количестве слотов в 30, игрок-читер может присвоить себе слот 35? Тогда да, 65535.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 07.05.2012
Quote:
Или я что-то пропустил, и например при количестве слотов в 30, игрок-читер может присвоить себе слот 35? Тогда да, 65535.
|
Опачки... Я выпал из темы. Такое вообще возможно со слотами?
Re: Warning: PlayerDialogResponse crash exploit -
iEnemY - 07.05.2012
Ну раз человек намекнул про 70000, то... сам вот теперь думаю...
И как то заодно вспомнил - какого хрена в дефолтном ГФ при каждой команде проверяется IsPlayerConnected? Бред. Ну, может и не бред, раз на то пошло (вообще легче было бы в шапке написать !IsPlayerConnected() return 1; ).
Re: Warning: PlayerDialogResponse crash exploit -
DartfoL - 08.05.2012
Quote:
Опачки... Я выпал из темы. Такое вообще возможно со слотами?
|
Сомневаюсь. Нет там такого, сколько я не изучал. А вот отправка команды, диалога и т.п. возможна с невидимым коннектом. То есть это как бы недоконнект. Только Incoming connetion в логах пишет и слот выделяется, а дальше начинается флуд пустыми диалогами и идёт это "Warning: PlayerDialogResponse crash exploit". Ходили слухи, что в 0.3a пофиксили это - так и есть. Мне не удалось вызвать команду, будучи не полностью присоединённом к серверу. А только вот почему проверка на эксплоит краша стоит раньше, чем проверка на полный коннект, я не знаю. Надеюсь, это фиксанули в 0.3e
Re: Warning: PlayerDialogResponse crash exploit -
Jon_De - 08.05.2012
Quote:
Originally Posted by iEnemY
Давайте мыслить здраво, и писать хотя бы вот так
pawn Код:
for (new i = 0; i < GetMaxPlayers(); i++) { if(!IsPlayerConnected(i)) Kick(i); }
Или я что-то пропустил, и например при количестве слотов в 30, игрок-читер может присвоить себе слот 35? Тогда да, 65535.
|
Вроде предложение выше было более здравомысленное
Re: Warning: PlayerDialogResponse crash exploit -
Vagina - 21.05.2012
итак, и до нас дошло сие чудо)) особо заморачиваться по количеству обрабатываемых ID не стоит - крашер получает наименьшее свободное ID, как и обычный игрок при подключении. Удалось ли вылечить баг приведенным выше примером сказать пока сложно, но на данный момент полет нормальный
Re: Warning: PlayerDialogResponse crash exploit -
FL1K3R - 26.05.2012
Warning: PlayerDialogResponse PlayerId: 18 dialog ID doesn't match last sent dialog ID
а вот новая шняга из логов. Что бы ЭТО могло быть?
Re: Warning: PlayerDialogResponse crash exploit -
TriskeliS - 26.05.2012
Похоже на попытку подмены ид диалога
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 26.05.2012
Quote:
Warning: PlayerDialogResponse PlayerId: 18 dialog ID doesn't match last sent dialog ID
|
Логика разработчиков сампа:
Они хранят на стороне сервера текущий у клиента диалог, при этом проверяют ид диалога примланный клиентом.
Кто из них блондинко?
Re: Warning: PlayerDialogResponse crash exploit -
eakwarp - 26.05.2012
Quote:
Originally Posted by jhonyxakep
Логика разработчиков сампа:
Они хранят на стороне сервера текущий у клиента диалог, при этом проверяют ид диалога примланный клиентом.
Кто из них блондинко?
|
По моему, это классный способ вычислить гнилую овцу с артмани среди игроков.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 26.05.2012
Quote:
По моему, это классный способ вычислить гнилую овцу с артмани среди игроков.
|
Согласен... Был бы. Но нет ни коллбека, ничего нет. Зачем мне кусок лога, в которые я заглядываю раз в месяц. А тем более понять кем был ид 18 ну просто нереально
Re: Warning: PlayerDialogResponse crash exploit -
eakwarp - 26.05.2012
Quote:
Originally Posted by jhonyxakep
Согласен... Был бы. Но нет ни коллбека, ничего нет. Зачем мне кусок лога, в которые я заглядываю раз в месяц. А тем более понять кем был ид 18 ну просто нереально
|
Эм, что нереально? Крутануть кто коннектился с 16м ид выше.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 26.05.2012
Quote:
Эм, что нереально? Крутануть кто коннектился с 16м ид выше.
|
20 мегабайт логов читать? Нет уж, спасибо. Я конечно понимаю там grep всякие... Но не проще-ли было сделать коллбек.