2012-10-15 17 views

Odpowiedz

0

Odpowiedzi na podobne pytania zawsze proponują użycie Iphlpapi, ale nie jest jasne, jak można uzyskać RpcSs (nazwa usługi) w tym pliku netstat -ban kopii kopii: TCP 0.0.0.0:135 0.0.0.0:0 SŁUCHAJĄCA RpcSs [svchost.exe]

Albo Harmonogram tutaj:

TCP [::]: 49.154 [::]: 0 ODBIORU Harmonogram [svchost.exe]

Spojrzałem za rozwiązanie tego i nie płetwa d coś (-łatwo). Netstat wywołuje pewne nieudokumentowane funkcje w Iphlpapi, ale nie jest jasne, czy pobiera nazwę usługi od Iphlpapi, czy w jakiś sposób używa pid z Iphlpapi i używa czegoś innego, aby uzyskać nazwę usługi. Nie mam ochoty spędzać czasu z debuggerem, aby odpowiedzieć na to pytanie, ponieważ:

Jednak najlepiej byłoby nie chcieć korzystać z podejścia pollingowego z C#. Bardziej odpowiednie byłoby stosowanie ETW. Myślę, że brak przykładów użycia go z C# jest, ponieważ jest trochę narzutów, aby zacząć z nim i przykłady wokół mogą być specyficzne dla innego typu scenariuszy śledzenia/monitorowania.

Podsumowanie: Jeśli nie masz czasu na wdrożenie, po prostu zapisanie wyniku netstat wydaje się być "rozwiązaniem". Idealnie chciałbym znaleźć prosty w użyciu przykład C# do monitorowania jakichkolwiek połączeń sieciowych i ustalenia, jakie usługi lub procesy obsłużyły/zainicjowały je wraz z możliwymi zmianami firewalla. Wierzę, że robienie obu jest możliwe przy ETW, ale dla moich aktualnych potrzeb trudno uzasadnić nieznaną ilość czasu potrzebnego, aby to zadziałało. Na co najmniej zorientowałem się, że "dostawcy zapytań loga" wymieniają dostawców, to musisz zrobić coś, aby włączyć dostawcę (i obsługę sterowników do śledzenia w niektórych przypadkach, np. Przechwytywanie pakietów). Jest projekt C# do korzystania z ETW. Ale nie jest wcale jasne, ile wysiłku będzie polegało na odtworzeniu wyjścia netstat za pomocą ETW.

1

Po długim rozejrzeniu się stwierdziłem, że w strukturze MIB_TCPROW_OWNER_MODULE istnieje nieudokumentowane "OwningModuleInfo".

Następnie poszukuje że znalazłem ten komentarz:

Weird issue regarding GetOwnerModuleFromTcpEntry when targeting x64

„doszedłem do wniosku, że pierwszy element w tablicy to indeks usługi na liście usług działa .. . "

Tak więc odpowiedź na to pytanie polegałaby na użyciu tego, aby uzyskać informacje o nazwie, które pokazuje netstat -b (nazwa usługi i adres + port), filtrowanie żądanej usługi. Znalazłem tę bibliotekę https://github.com/Loriowar/IpHlpApidotnet, która ma już zestaw powiązanych kodów z wyjątkiem tej funkcji.

Inne przydatne linki:

Marshalling Struct with Array of Struct Member

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366911(v=vs.85).aspx

Powiązane problemy