Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Узнать название процесса открывшего сокет


Автор: JackSoft 4.12.2009, 01:01
Есть самописное прокси. Как узнать имя процесса (например icq.exe), который открыл соединение на прокси? (тот кто открыл сокет)

Автор: ButtonOFF 7.12.2009, 16:30
Через ZwQuerySystemInformation с SystemHandleInformation пробовал?

Автор: JackSoft 27.12.2009, 00:34
Что-то никак. Может еще приоткроете завесу тайны? ;)

Автор: darkmamba 27.12.2009, 13:24
В SystemHandleInformation есть поле Object, по этому объекту через ZwQueryObject (вроде бы, точно не помню) можно получить тип объекта, там же можно получить строку типа объекта. Тип объекта сокет у меня (ВинХР SP3) = 28, но не все сокеты имеют такой тип, хз почему... этот спсоб сгодится для инжекта и отправки через сокет.. но не универсален.

Автор: kami 28.12.2009, 18:42
Цитата(JackSoft @  4.12.2009,  01:01 Найти цитируемый пост)
Как узнать имя процесса (например icq.exe), который открыл соединение на прокси?

Имхо, нереально. Хендлы соединений, открытых на прокси принадлежат самому прокси.
Если соединение локальное (то есть в пределах одного компьютера), то еще можно извратиться, просчитывая все соединения, открытые в процессах и сопоставлять их localAddress:port с RemoteAddress:port прокси.
Если же соединение удаленное, то кроме как спросить открывшее его приложение - имхо - нельзя. И то - если это позволяет протокол обмена.

Буду рад, если ошибаюсь, но "меня терзают смутные сомнения" smile

Автор: JackSoft 28.12.2009, 22:15
Мне именно локальные соединения и нужны. Тоесть прокси на машине пользователя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)