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

Полная версия: Реконструкция пакетов из 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);
Вообще реассембл Tcp стрима тот еще гемор. Нужная инфа о частях пакета есть в его заголовке, стучи в Телеграм, @karyzir помогу чем смогу
Зависит от самого приложения. Если там все в перемешку (в буфере, который отправляют), то разбирать точно таким же образом, как и входящие пакеты, либо делать перехват до того, как пакеты кладутся в буфер.
n3k0nation Написал:Зависит от самого приложения. Если там все в перемешку (в буфере, который отправляют), то разбирать точно таким же образом, как и входящие пакеты, либо делать перехват до того, как пакеты кладутся в буфер.

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