![]() |
|
Модераторы: feodorv |
![]()
|
|
| asm2asm |
|
|||
|
Unregistered |
Я занимаюсь разработкой программы перехвата сетевых пакетов у конкретного приложения с целью их анализа. А именно у игры Warcraft III. Проблемма состоит в том что перехватываються все пакеты за исключением входящих, тех, которые были подключены командой AcceptEx (она происходит при подключении клиентов к хосту какойлибо карты) не могу найти точку входа в процедуру получения данных из сокета. Перехватываю recv, recvfrom, wsarecv, wsarecvfrom, wsarecvex, readfile, readfileex в библиотеках wsock32.dll, ws2_32.dll, mswsock.dll. и при этом ни в одну их них вызова не происходит. Может я чтото не понимаю или есть какието недокументированные способы получения потока?
Какие ещё команды могут получать информацию из сокетов? Все остальные входящие пакеты перехватываються нормально, за исключением тех сокетов которые были обработаны командой AcceptEx. И ещё одна проблемма это вычисления удалённого IP у таких соединений. После всех процедур описанных в MSDN, команда getpeername возвращает 0. И мало того по непонятной причине после принятия сокета командой AcceptEx он меняет свой указатель, т.е. пакеты приходят на другой сокет (принятый тойже командой, но предыдуей). Хотя у толькочто принятого сокета можно определить удалённый адрес. Эта проблемма не столь важна и имеет обход в данной ситуации, но всётаки может кто знает. Это низкоуровневое программирование, поэтому не пишите названия функций всяких дочерних классов. В данном случае вопрос на более низком уровне. Замучался уже пробовать и искать. Дебугеры ничем не помагают. Очень уж охото зделать полезную утилиту для WC3, такую какой ещё нет, да и самому интересно. |
|||
|
||||
| Arush |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.11.2003 Репутация: нет Всего: 1 |
Получать данные из сокетов может целая куча функций, например GetOverlappedResult
Когда мне надо было перехватывать трафик я пользовался Layered Service Provider (LSP). Эта штука работает на более низком уровне WinSock2, поэтому функций там не очень много - насколько помню только те, что начинаются на WSP. Где-то был работающий пример. Потерялся. Брал его вроде на микрософте. Гугл должен помочь. ЗЫ. Скорее всего данные не перехватываются, потому, что используется Overlapped режим, т.е. винсок сам вызывает функцию, которая указана в этой структуре, либо выставляет событие, что пора забирать данные, не помню точно. Это сообщение отредактировал(а) Arush - 25.5.2005, 20:35 |
|||
|
||||
| Arush |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.11.2003 Репутация: нет Всего: 1 |
||||
|
||||
| Lurker |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.3.2007 Репутация: нет Всего: нет |
Люди а можно пример подобной программы ? для перехвата пакетов определенно программы ? я так понял ее можно использовать не только для Варкрафта.
|
|||
|
||||
| Lurker |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.3.2007 Репутация: нет Всего: нет |
Люди а можно рабочий пример программы простого перехвата пакетов ?
Киньте кому не жалко... на готовом примере легче разбираться с нуля не получается осилить :( Это сообщение отредактировал(а) Lurker - 31.7.2008, 13:44 |
|||
|
||||
| Олег2005 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Мне кажется что это происходит из-за особенностей этой функции
|
||||||
|
|||||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 3 Всего: 58 |
Во намутили
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |