Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Перехват запросов от Opera Internet Browser
Посл.ответ Сообщение

Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 июня 2006 15:10 · Поправил: Storm
· Личное сообщение · #1

Никак не могу понять как опера умудряется отправлять данные.
Я внедрил в ее процесс перехватчик на функции (WinSock API) send и WSASend.
На осле и на мозилле перехватчик точно ловит и показываем мне куда обращается браузер.
А вот опера - не хочет. То ли использует другую функцию для отправки данных. Есть предположение, что это делает за нее opera.dll, но посмотрет таблицы экспорта/импорта ответа я не нашел. Нету там ничего подозрительного.

Есть идеи? Или может есть еще реальные способы перехвата и модификации данных?
ЗЫ Сам знаю, есть. Например использовать драйвер. Но к сожалению моя квалификация написать драйвер не позволяет.



Ранг: 2.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 июня 2006 16:34
· Личное сообщение · #2

но посмотрет таблицы экспорта/импорта ответа я не нашел. Нету там ничего подозрительного.
возможно, что она получает адреса через loadlibrary/getprocaddress... либо действительно использует альтернативу send.




Ранг: 122.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 09 июня 2006 16:44
· Личное сообщение · #3

Опера использует WSARecv и WSASend. По крайней мере для 7.23 я могу это утверждать, поскольку на ней проверял.
И вроде бы не использует dll для этого, т.е. это делается из самого екзешника.
вот.
По поводу идей:
драйвер, да, для этой затеи все равно что из пушки по воробъям.(имхо ессно).

Есть отностительно более легкий способ - написание Layered Service Provider.
То бишь уровневый поставщик услуг. Представляет из себя dll, устанавливается между Winsok и Base provider.
Позволяет полностью и вполне документированно иметь доступ пракитчески ко всем функциям Winsok2(За исключением вспомогательных функций преобразования адресов и некоторых других, которые реализованы в рамках ws2_32.dll)

если с английским туго - то спешу обрадовать, инфы не много, на русском нет вообще

Из материалов на пендосском могу рекомендовать следущее:
1. Network Programming for Microsoft Windows, Second Edition by Anthony Jones and Jim Ohlund, Microsoft Press, 608 pages, ISBN 0-7356-1579-9, 13 February 2002
2. Unraveling the Mysteries of Writing a Winsock 2 Layered Service Provider Wei Hua, Jim Ohlund, Barry Butterkley. Microsoft Systems Journal May 1999

первое есть в сети, второе - статейка в Microsoft Knowledge Base.

дерзай.


ps
кстати писать его не нужно, нужно взять пример из последней PSDK и обработать под свои нужды.



Ранг: 145.8 (ветеран)
Активность: 0.070
Статус: Участник
www.int3.net

Создано: 09 июня 2006 17:23
· Личное сообщение · #4

apimon в помощь.



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 июня 2006 17:31
· Личное сообщение · #5

intty пишет:
Опера использует WSARecv и WSASend. По крайней мере для 7.23 я могу это утверждать, поскольку на ней проверял.

Вот не знаю. У меня на 8.54 не ловит. Щас буду проверять на семерке.

intty пишет:
кстати писать его не нужно, нужно взять пример из последней PSDK и обработать под свои нужды.

А если нет последнего SDK? Хотя вроде SDK это вроде тот же MDSN.

ЗЫ А можешь закинуть мне в мыло это чудо?




Ранг: 122.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 09 июня 2006 18:03
· Личное сообщение · #6

Ну в общем нашел я 8.54 у себя.
точно также. WSASend и WSARecv используются для передачи/получения данных. смотри аттач(получен в результате работы обработчика WSASend)

А если нет последнего SDK? Хотя вроде SDK это вроде тот же MDSN.
почти, но не совсем. PSDK - Это platform software development kit. т.е. хидеры, либы, сэмплы в том числе.
последний для win2003sp1 весит 300 с чем то метров. полное имя - 5.2.3790.1830.15.PlatformSDK_Svr2003SP1_rtm.iso

по поводу закинутьнамыло: неужели я должен тратить gprs'ный траф, если кому-то лень погуглить? ;)

e4bf_09.06.2006_CRACKLAB.rU.tgz - WSASend.txt



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 июня 2006 18:11
· Личное сообщение · #7

intty пишет:
точно также. WSASend и WSARecv используются для передачи/получения данных. смотри аттач(получен в результате работы обработчика WSASend)

Хм, а точнее, чем получен?

Я тут еще посидел на перехватчиком и кажется просек, что немного накосячил
Тогда другой вопрос. Ведь вроде WSASend ниже по уровню чем send. То есть send все равно вызывает WSASend. Так? По крайней мере с recv и WSARecv именно так.




Ранг: 122.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 09 июня 2006 18:19 · Поправил: intty
· Личное сообщение · #8

Хм, а точнее, чем получен?
получен из моего lsp, из обработчика WSASend, просто скидывается в файл содержимое буфера, предназначенного для посылки.

Тогда другой вопрос
именно так.
функции send и recv вызывают свои WSA аналоги, которые затем передаются ниже по стеку.

Для пущей уверенности можно глянуть на реализацию send и recv в ws2_32.dll.



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 июня 2006 19:02
· Личное сообщение · #9

intty пишет:
получен из моего lsp, из обработчика WSASend, просто скидывается в файл содержимое буфера, предназначенного для посылки.

Ок, все.

Всем спасибо.


 eXeL@B —› Программирование —› Перехват запросов от Opera Internet Browser
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати