Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
.NET 4.x

Хук на ws2_32.dll

06.10.2014, 14:53. Показов 3101. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый всем. Нужна помощь коллективного разума.
Пишу парсер трафика онлайн игры. Поставил хук на прием данных сокета (recv) по которому игра получает данные.
Перехваченные данные пытаюсь распарсить, но происходят некоторые неочевидные для меня вещи
1-количество якобы принятых данных (размер буфера) постоянно равен 65к (почему?), хотя данных существенно меньше, при этом буфер содержит помимо данные еще кучу мусора.
2-данные не всегда приходят за один раз, т.е. хотя и полный размер пакета данных не превышает 65к, но все равно иногда происходит их разбивка - почему?
3-часто вместо нужных данных буфер оказывается пустым или содержит левые данные, мусор 1-3 байта, которого даже не видно в снифере - тож почему так?

код которым я пытаюсь взаимодействовать с данными

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 private int recv_Hooked(IntPtr socketHandle, IntPtr buf, int count, System.Net.Sockets.SocketFlags socketFlags)
        {
            var countByte = 0;
            if (count >3 && GameSocketHandle.ToInt32() > 0)
            {
                var str = Marshal.PtrToStringAnsi(buf);
 
                if (!string.IsNullOrEmpty(str) && str.Length > 3)
                {
                    string result = str;
                    var lastChar = result.Substring(result.Length - 1, 1);
                    var firstChar = result.Substring(0, 1);
 
                    if (firstChar=="%")
                    {
                        while ( lastChar != firstChar)
                        {
                          countByte=countByte+  NativeSocketMethod.recv(socketHandle, buf, count,socketFlags);
                            result = result + Marshal.PtrToStringAnsi(buf);
                            lastChar = result.Substring(result.Length - 1, 1);
                        }
                        OnDataReceived(result);
                      if(countByte>0) 
                          buf = Marshal.StringToHGlobalAnsi(result);
                    }
                }
            }
            return countByte+EGtools.GameModel.SmartFoxServer.NativeSocketMethod.recv(socketHandle, buf, count, socketFlags);
        }


с хуками я ранее не работал, поэтому причины такого поведения не особо понятны...

Может кто разъяснить в чем тут дело? что я делаю не так?

п.с. забыл добавить - что странности появляются не всегда... примерно 50/50 - первый запуск нормально, 2й глюки и т.д.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2014, 14:53
Ответы с готовыми решениями:

Сокеты через Ws2_32.dll
Есть ли у кого работающий пример гет запроса на какой-нибудь сайт ? В нэте всё в DEV-C++ не работает,а знаний что-либо исправить не...

Перехват Send(ws2_32.dll)
Создаю программу для ограничения доступа юзеров к определенным сайтам . Использую библиотеки для перехвата ExtendedAPIFunctions и...

Ошибка после подключения ws2_32.dll
После подключения ws2_32.dll даже такой #include <iostream> #include <stdio.h> #include <stdlib.h> //#pragma comment (lib,...

20
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
08.10.2014, 00:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hepper Посмотреть сообщение
ну а если данные прочитаны не все? т.е. прочитал я половину сообщения, а дальше?
Не вижу здесь принципиальной проблемы.

Цитата Сообщение от hepper Посмотреть сообщение
получается надо заморочится со своим буфером и складывать неполные куски туда и склеивать?
Можно и так.
А можно читать и обрабатывать кусками, реализовав нечто вроде стейт-машины.
По таким схемам работает 90% всех клиент-серверов в TCP.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2014, 00:59

Adb в Windows XP (Eclipse - точка входа процедуры WSAPoll в библиотеке ws2_32.dll не найдена)
Всем привет! Пытаюсь поставить на своей Windows XP sp3,eclipse с плагином adt для разработки под Android.Знаю,что гугл на данный момент...

Хочу изучить TCP/IP на самом глубоком уровне. Что "внутри" библиотеки ws2_32.dll (winsock)?
Предисловие (можно не читать если не интересно) Разрабатываю клиент-серверную архитектуру, от которой требуется высочайшая...

Хук WH_GETMESSAGE, DLL, PID
Всем доброго времени суток! Имеется задача: замер частоты выполнения операций конкретного процесса. Создаю модальный диалог, получаю список...

Хук своего же окна. DLL
Есть чужая программа которая при запуске грузит мою dll в себя. Нужно перехватить появление окна этой программы. Как это сделать? Какой...

Не работает глобальный хук находящийся в dll
Добрый вечер! Нужен глобальный хук подгружаемый из dll вот что имею: hookwin.h #include "hookwin_global.h" #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru