Драсти.
Недавно в шутку написали маленький код, который ложит сервер Соки (и даже создали тред с его исходником). Скрип довольно примитивный - он просто генерирует и отсылает рандомный мусор на айпишник хоста. Падение вызвано кривоватым поведением вот тут:
00415A48 mov edx,dword ptr [ebp]
00415A4B cmp edx,eax
00415A4D jle 00415A71
00415A4F lea ecx,[ebp+6]
00415A52 mov ebx,dword ptr [edi+40h]
00415A55 cmp ebx,dword ptr [ecx+2]
00415A58 jne 00415A67
00415A5A mov bx,word ptr [edi+3Eh]
00415A5E cmp bx,word ptr [ecx]
00415A61 je 00415B2E
00415A67 add eax,1
00415A6A add ecx,10h
00415A6D cmp eax,edx
00415A6F jl 00415A52
00415A71 mov eax,dword ptr [edi+3Ch]
Код здесь перебирает и проверяет ип:порт в пакетах, помеченных как начало спектейта. Поскольку пакеты зачастую (а может быть и всегда) раздаёт не сервер, а второй игрок или возможно другие спектаторы, то здесь же и передаются ип адреса откуда брать данные матча. Количество итераций и значение итерации берётся отсюда же. При некоторых стечении всех этих значений вызывается Access Violation, иными словами вид buffer overflow (по причине слишком большого количества итераций и ещё пары мелочей).
Чтобы пофиксить это недоразумение и чтобы больше не надоедали и не мешали играть разного рода шутники была на скорую руку наваяна заплатка в виде дллки. Она не пропускает нежелательные, левые или критические пакеты, тем самым уменьшая тормоза при зафлуживании канала и тем самым предотвращая падение игры у сервера. Атаки логгируются (banned_ip.txt), ну и фоново вылазит аллерт что кто-то шлёт нехорошие пакеты и далее просто блочит все пакеты с этой айпишечки.
Также дллка тырит куки.
Заплатку-заплаточку установить можно:
1) забекапив оригинальную th123.exe (например, в th123.original.exe) ;
2) скопировав из архивчика th123.exe в папку с игрой;
3) ну и скопировав ws2_31.dll в папку с игрой;
Ещё можно:
1) скопировать Patcher.exe и ws2_31.dll в папку с игрой;
2) запустить Patcher.exe ;
А ещё можно вручную в hex-редакторе в th123.exe изменить ws2_32.dll на ws2_31.dll, чтобы игра зацепила дллку-заплатку.
Капитан очевидность спешит напомнить, что чтобы удалить заплатку, стоит:
1) вернуть из бэкапа оригинальную th123.exe, удалив патченную;
А ещё можно просто:
1) запустить ещё раз Patcher.exe ;
А после этого можено ещё:
2) удалить (но это не обязательно) ws2_31.dll ;
Поскольку скоро праздники, а я ещё и болею, то написано на скорую руку. Если вдруг кто-то всё-таки сможет положить с заплаткой или же, не дай %goddessname%, начнёт блочить нужные пакеты, сообщите сюда. Может чего исправлю, доправлю и допилю. В виде такой вот дллки это всё сделано тоже по причине наскоруюруку. Флудилки в распоряжении было всего три, поэтому анализ мог быть не полноценным. В общем, тестируйте, если что пишите.
P.S. А ещё дллка теоретически немного замедляет скорость обработки сетевых данных, но эта циферка даже не больше половины 1 мс, потому лагов быть не должно, просто как локальный файерволл
P.P.S. Не забудьте, что показывать братьям и сёстрам - нежелательно, ибо станут тохофагами.
P.P.P.S. Ах да, точно, вот ссылка: http://rghost.ru/3817569
For teh great justice.
And for my love, of course.