Форум: "Сети";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Вниз
Нумерация открытых хэндлов чужого процесса Найти похожие ветки
← →
FireHack (2003-10-27 18:36) [0]Всем привет!!!
Проблема следующая - было необходимо вывести список:
ip | port | Id процесса
с первыми 2-мя все просто (можно использовать GetTcpTable), но как определить id процесса, инициирующего соединение. Кто-то посоветовал пройтись по всем открытым хэндлам процессов, но, как это сделать, не сказал.
Вопрос: как это сделать
Всем спасибо.
← →
Digitman (2003-10-28 11:04) [1]я бы поступил проще
- устанавливаем любой глоб.хук
- в ходе иниц-ции хук-DLL перехватываем WinsockAPI-вызовы socket(), CloseSocket(), bind(), connect() - эти ф-ции дают инф-цию о хэндлах создаваемых гнезд и ассоциированных с ними интерфейсами/номерами портов
- в ходе той же инициализации вызываем GetCurrentProcessId для получения Id тек.процесса, в контексте которого возможно будут впоследствии вызываться вышеупомянутые ф-ции
т.о., ставится однозначное соответствие между Id процесса и Winsock-ресурсами, им занимаемыми/освобождаемыми в ходе работы
полученная инф-ция передается любым удобным способом в процесс-монитор, установивший этот глоб.хук
сама хук-ф-ция в теле хук-DLL может ничего полезного и не делать, просто вызывать в своем теле CallNextHookEx()
← →
FireHack (2003-10-28 13:10) [2]>> Digitman
Тогда для корректной работы тебе нужно запускать свою прогу ДО запуска всех приложений ака открытия сокетов, а мне необходимо иметь ТЕКУЩУЮ инфу об открытых сокетах.
← →
Digitman (2003-10-28 16:27) [3]копай в msdn в сторону интерфейса транспортного устройства (кл.слово "TDI")
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.014 c