Просмотр полной версии : Повторное использование сокетов
Привет всем!
Мониторю трафик клиента и вижу поразительную вещь: клиент при соединении с логин и гейм серверами использует один и тот же сокет :o (closesocket не вызывается). Подскажите плиз как такое возможно? И как такое можно реализовать на Delphi? Прошу к гуглю не отсылать... уже все облазил на тему reuse socket и ниче толкового не нашел...
клиент при соединении с логин и гейм серверами использует один и тот же сокет :o (closesocket не вызывается).
Сильный аргумент :crazy:
Млин, я проверял хэндл сокета один и тотже ))
Добавлено спустя 32 минуты 39 секунд:
Если хочешь поставь хуки на recv и send и убедишься))
The DisconnectEx function closes a connection on a socket, and allows the socket handle to be reused.
http://msdn2.microsoft.com/en-us/library/ms737757(VS.85 (http://msdn2.microsoft.com/en-us/library/ms737757(VS.85)).aspx
Note This function is a Microsoft-specific extension to the Windows Sockets specification.
А значит использовать эту функцию - плохая практика.
Спасибо тебе огроменное очень помог!!!!!!!!!! А я походу совсем старый стал :)
Добавлено спустя 1 минуту 55 секунд:
с меня пиво если вдруг будешь в наших краях :)
Ptica, ты мне ток одно скажи а какая разница сколько сокетов клиент юзает?), или по твоему об этом знает сервер и будет так палить?, или просто думал что так нельзя и данное наблюдение сильно потрясло?)
Нет, мне для обхода антибота на одном оч. известном сервере нужно как можно точнее эмулировать клиент, т.е. антибот и состоит в том, что сам перехватывает recv и send и запоминает где-то с какого сокета был коннект на логин, а дальше при коннекте на гейм сравнивает... и соединение обрывает если не тот сокет.
Добавлено спустя 8 минут 33 секунды:
Re:
Ptica, ты мне ток одно скажи а какая разница сколько сокетов клиент юзает?), или по твоему об этом знает сервер и будет так палить?, или просто думал что так нельзя и данное наблюдение сильно потрясло?)
Ты меня совсем за идиота держишь :D
dmitry501
31.03.2008, 11:49
по поводу коннектов с одного сокета - точно лажа.
Если сервер имеет не один гейм-сервер, то после логина на логин-сервер выводится список серверов и к каждому из них поднимается коннект, в это время в таблице отражается пинг.
по поводу коннектов с одного сокета - точно лажа.
Если сервер имеет не один гейм-сервер, то после логина на логин-сервер выводится список серверов и к каждому из них поднимается коннект, в это время в таблице отражается пинг.
Какой коннект?)) Это же пинг))
Добавлено спустя 17 минут 8 секунд:
Re: Повторное использование сокетов
dmitry501Вы наверно что-то напутали ICMP соединение не устанавливает
Нет, мне для обхода антибота на одном оч. известном сервере нужно как можно точнее эмулировать клиент, т.е. антибот и состоит в том, что сам перехватывает recv и send и запоминает где-то с какого сокета был коннект на логин, а дальше при коннекте на гейм сравнивает... и соединение обрывает если не тот сокет.
Если не трудно сказать, то на каком именно сервере ?
Подобная защита очень легко обходится.
DisconnectEx давно известная ф-ция, но и ее перехватить как нечего делать.
dmitry501
01.04.2008, 05:28
Ничего я не напутал. Я имел ввиду игровой пинг, NetPing.
При входе в игру обратите внимание на цифры справа от серверов в списке.
Вот это. И к каждому из серверов создается соединение и происходит обмен 2-мя пакетами для получения этих цифр. Одновременно. Из разных клиентских сокетов.
Сори да действительно это я затупил пролистал лог еще раз:
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Сокет send:3532 length:7 flags:0
>> 07 00 00 FE FF FF FF
Вот это по видимому и есть те пинги о которых Вы и говорите...
Но! Посмотрите на остальной лог вот начало (логин сервер)
Сокет recv:3476 length:2 flags:0
Result:2
Bufer:89851984
<< AB 00
Сокет recv:3476 length:1 flags:2
Result:1
Bufer:1235872
<< 00
Сокет recv:3476 length:169 flags:0
Result:169
Bufer:89851986
<< 00 0D 5B CB 37 5A 78 00 00 07 CB 63 DA DF 80 26 A5 2A EB E8 EB BA 0B 6D 31 85 EA BD F3 F7 A1 0D 9E CA 69 00 14 FB AA B4 F5 7D E9 8C F8 6D 46 0F 6B D9 18 A7 6A 3B 1D 98 03 1A 22 E3 52 C4 69 5C 72 A4 DB A9 EC 30 1E 60 4B 42 69 6D A3 E4 A2 01 EA B7 93 94 96 44 C4 70 41 3C 0E 49 A6 B2 DF EC 31 C9 A8 E9 75 BD 0A 86 F1 54 12 FC 1F A8 37 DD 04 5D A5 39 46 56 3C FF 84 38 D7 1A 0E 3F 68 08 0D D8 F9 54 96 39 90 49 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
Видим хэндл сокета - 3476
Далее гейм сервер:
Сокет send:3476 length:81 flags:0
>> 51 00 3D E3 92 D5 F6 C0 2E 52 F7 AC 3F 61 C0 C1 F0 02 1E C3 B2 E1 C2 C5 2B 4B EE A2 31 5C FD F4 C5 31 2D EA 9B 82 A1 98 76 16 B3 F1 62 5E FF A7 96 27 3B FB 8A D8 FB C2 2C 4B EE A2 31 0D AC F7 C6 77 6B AC DD 92 B1 84 6A 1C B9 AD 3E 0F AE C2 F3
Сокет recv:3476 length:16384 flags:0
Result:18
Bufer:12498192
<< 12 00 E2 4C 3D 1B 3F 67 89 9A 6C D7 44 45 E4 88 B9 2E
Сокет recv:3476 length:16384 flags:0
Result:11
Bufer:12498192
<< 0B 00 31 70 68 5E 35 6F 81 92 94
Сокет recv:3476 length:16384 flags:0
Как видим хэндл сокета не изменился - 3476
Как видите соединение с логин и гейм идут по одному сокету а "пинг" по другому.......
dmitry501
01.04.2008, 13:23
Ну всё выяснили, и что дальше? Для чего это все? Вряд ли сервер каким-либо образом проверяет Handle сокета клиента. Если уж там есть подобная проверка то только на совпадение IP:Port. Или ты хочешь оставить штатный антибот и убедить его что бот - клиент? По-моему гораздо проще эмулировать уже выходной трафик от антибота, а самого антибота грохнуть. Ведь он наверное не просто ограничивается, перехватывая TCP-соединение, а еще и проверяет файлы, их crc, запущенные проги и т.д.
Выкинуть антибот нельзя прежде всего потому что он дополнительно криптует трафик
Добавлено спустя 28 минут 54 секунды:
Re: Повторное использование сокетов
>По-моему гораздо проще эмулировать уже выходной трафик от антибота, а самого антибота грохнуть.
Так дело в том что не проще, антибот оч. хорошо защищен Armadillo 3.8, отрипать саму процедуру шифрации Armadillo не дает. Но вот на инжект проверку написать никто видно не удосужился)))
На каком сервере эта защита стоит ?
Armadillo 3.8 хоть и муторно, но снимается. темболее такая древняя
PanAm, я в этом деле нофенький) форумы полистал по поводу взлома armadilo, посмотрел скока люди хотят за его снятие и быстренько закрыл)
Anubis, пиши в асю
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot