Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   Реконструкция пакетов из WSARecv\WSASend (https://forum.zone-game.info/showthread.php?t=40504)

ANZO 17.04.2016 00:08

Реконструкция пакетов из WSARecv\WSASend
 
Доброго времени суток, форумчане.
После детура общеизвестных WSARecv\WSASend функций встал вопрос о корректном сборе секвенций в готовый пакет. В данный момент, само собой, в буфере перехватываемых функций есть несколько пакетов\куски предыдущих пакетов и т.п.

Как корректно их собрать в полноценные пакеты?

Для примера, текущая структура перехватываемой функции на C#:

Код:

        [DllImport("ws2_32.dll", SetLastError = true)]
        public static extern SocketError WSASend(
            IntPtr socketHandle,
            WSABuffer[] buffer, // Тут всегда количество равно 1, даже если заюзать * и unsafe
            uint bufferCount,
            uint bytesTransferred,
            SocketFlags socketFlags,
            IntPtr overlapped,
            IntPtr completionRoutine);


Necroz-Team 17.04.2016 10:38

Re: Реконструкция пакетов из WSARecv\WSASend
 
Вообще реассембл Tcp стрима тот еще гемор. Нужная инфа о частях пакета есть в его заголовке, стучи в Телеграм, @karyzir помогу чем смогу

n3k0nation 17.04.2016 19:04

Re: Реконструкция пакетов из WSARecv\WSASend
 
Зависит от самого приложения. Если там все в перемешку (в буфере, который отправляют), то разбирать точно таким же образом, как и входящие пакеты, либо делать перехват до того, как пакеты кладутся в буфер.

Necroz-Team 17.04.2016 20:34

Re: Реконструкция пакетов из WSARecv\WSASend
 
Цитата:

Сообщение от n3k0nation (Сообщение 410352)
Зависит от самого приложения. Если там все в перемешку (в буфере, который отправляют), то разбирать точно таким же образом, как и входящие пакеты, либо делать перехват до того, как пакеты кладутся в буфер.

Да пофигу как оно летит, что ловить WSA, что ловить пакеты сниффером, реассемблятся то они одинаково. Надо читать заголовки самого Tcp пакета, в них sequence части пакета и идет.


Текущее время: 01:12. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot