Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Список открытых сокетов+ ID процесса  (Прочитано 18320 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dvp
Гость
« : 15-08-2003 04:43 » 

в ХР есть функция iphlpapi.AllocateAndGetTcpTableFromStack
а как быть с остальными версиями Windows.
GetTcpTable дает список открытых сокетов но как узнать какой процесс их открыл?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 15-08-2003 08:19 » 

Цитата

в ХР есть функция

В ХР не может быть функции, в какой библиотеке она есть.

Если .NET ее имеет, так она будет работать и в 2000 если ты на него поставишь .NET студию.
Записан

А птичку нашу прошу не обижать!!!
dvp
Гость
« Ответ #2 : 15-08-2003 08:24 » 

iphlpapi.AllocateAndGetTcpTableFromStack -> dll = "iphlpapi.dll" function = "AllocateAndGetTcpTableFromStack"
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #3 : 15-08-2003 08:35 » 

В общем примерно так.
Ты при создании программы имеешь 2 варианта подключения библиотек, включаемый и нет.
Если нет, то тебе придется таскать эту dll с собой и своей программкой, а если ты сделаешь ее включенной в программу, то тогда достаточно будет 1-го файла .exe и все будет работать на любой Windows.

ВСЕ Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
dvp
Гость
« Ответ #4 : 15-08-2003 09:08 » 

да не все это не то .......
Есть утилита Русиновича TCPView которая может это делать на любой Windows, но вот как она это делает, черт ее знает, вроде драйвер свой загружает, но из списка используемых функций:
ntoskrnl._stricmp
ntoskrnl.ExGetPreviousMode
ntoskrnl.IoCreateDevice
ntoskrnl.IoCreateSymbolicLink
ntoskrnl.IoDeleteDevice
ntoskrnl.IofCompleteRequest
ntoskrnl.KeAttachProcess
ntoskrnl.KeDetachProcess
ntoskrnl.ObfDereferenceObject
ntoskrnl.ObQueryNameString
ntoskrnl.ObReferenceObjectByHandle
ntoskrnl.PsLookupProcessByProcessId
ntoskrnl.RtlFreeAnsiString
ntoskrnl.RtlInitUnicodeString
ntoskrnl.RtlUnicodeStringToAnsiString
ntoskrnl.RtlUnwind
ntoskrnl.SeCaptureSubjectContext
ntoskrnl.SePrivilegeCheck
ntoskrnl.SeReleaseSubjectContext
ntoskrnl.strncpy
ntoskrnl.ZwClose
ntoskrnl.ZwDuplicateObject
ntoskrnl.ZwOpenProcess
ntoskrnl.ZwOpenProcessToken
сложно понять как он получает процесс, открывший сокет.
Мож кто этим занимался, помогите плз
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #5 : 15-08-2003 09:16 » 

УУУУ как все запущено. Кернель функции тобой перечисленные доступны только из драйвера.

Если та библиотека их XP которую ты приводишь не умеет работать с нижними версиями винь, то тут вырастает проблемка.

У нас тут уже было обсуждение снифера. Если не найдешь - то я сам покапаюсь, так как вроде был ответ на этот вопрос, но на вскидку, не скажу.
Записан

А птичку нашу прошу не обижать!!!
dvp
Гость
« Ответ #6 : 15-08-2003 09:19 » 

да правильно, я привел список импортируемых драйвером функций
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #7 : 15-08-2003 09:24 » 

В общем если надо - найдем  Отлично пока поищи на форуме, а я архивы копну.
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #8 : 15-08-2003 09:39 » 

У Русиновича на сайте написано
Source Code to Netstatp
Wonder how TCPView works? Previous versions relied on SNMP (Simple Network Management Protocol) interfaces to obtain TCP/IP information. Starting with version 2.0, TCPVIew uses the IP Helper interfaces documented in MSDN. The complete source for the command-line version of TCPView, netstatp, demonstrate the IP Helper interface and is available here for download.
 Скачай и посмотри.
Записан
dvp
Гость
« Ответ #9 : 15-08-2003 09:45 » 

да был я там, это и было отправной точкой
исходники это не TCPView, а Netstap, а он показывает принадлежность к процессу только под ХР, т.к. ф-я AllocateAndGetTcpTableFromStack экспортируется iphlpapi только в ней.
Есть какой то другой механизм
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #10 : 15-08-2003 11:19 » 

Подебагил я прогу Руссиновича- ничего приятного сказать не могу. Очевидно, что он использует обращение к неким драйверам через IOCTL, в коде есть строки \Device\UDP, \Device\TCP, он их там с чем-то сравнивает, после обращение к какому-то драйверу. Вполне возможно что он обращается через IOCTL к Device\UDP, \Device\TCP? но доказательство я этого пока не нашел.
Использует он только ф-ции GetTcpTable и GetUdpTable, а дальше начинается обращение к драйверам.
Записан
dumb
Гость
« Ответ #11 : 25-08-2003 05:05 » 

у меня есть рабочая прога с описанной функциональностью, но с одним ограничением  Жаль  -- она определяет только пользовательские сокеты. при работе использует недокументированные (некогда  Ага ) функции NtQuerySystemInformation. работает так: получает таблицы хэндлов для каждого процесса в системе, каждый хэндл дуплицирует в свой процесс и вызывает для него функции getpeername и getsockname (и другие). всего-то  Ага . могу исходники прислать  Улыбаюсь
Записан
dvp
Гость
« Ответ #12 : 25-08-2003 05:11 » 

пришли
dvp@ec.mv.ru
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines