如何使用 GetExtendedTcpTable 在 Windows 中获取 TCP 连接的原始 PID?
How to get the original PID of a TCP connection in Windows using GetExtendedTcpTable?
我正在尝试从服务器内部获取与本地 http 服务器建立本地连接的进程的 PID。例如:Chrome-> HTTPREQ -> httpServer:8080。所以从 httpServer 我可以知道哪个进程正在建立连接,在这种情况下 Chrome.
我可以使用 GetExtendedTcpTable 和 TCP_TABLE_OWNER_MODULE_ALL 查询所有 tcp 连接,然后检查每一行并使用 row->dwOwningPid
8080 == ntohs(row->dwRemotePort) &&
row->dwLocalAddr == inet_addr("127.0.0.1") &&
row->dwRemoteAddr == inet_addr("127.0.0.1")
问题似乎是因为我安装了一个拦截我的流量的 AV,所以我得到的是 AV 的 PID 而不是启动连接的原始应用程序。
chrome -> av wfp -> httpserver
在不向 AV 添加排除项的情况下,有没有一种方法可以检索启动请求的原始进程的 PID,而不是像 AV 网络过滤器这样的转发器?
提前致谢。
回答我自己的问题:
Chrome -> AV -> 世界粮食计划署
如果 AV (Xport) -> (Yport)WFP
通常:
Chrome (Xport -1) -> WFP.
这对我有用。
我正在尝试从服务器内部获取与本地 http 服务器建立本地连接的进程的 PID。例如:Chrome-> HTTPREQ -> httpServer:8080。所以从 httpServer 我可以知道哪个进程正在建立连接,在这种情况下 Chrome.
我可以使用 GetExtendedTcpTable 和 TCP_TABLE_OWNER_MODULE_ALL 查询所有 tcp 连接,然后检查每一行并使用 row->dwOwningPid
8080 == ntohs(row->dwRemotePort) &&
row->dwLocalAddr == inet_addr("127.0.0.1") &&
row->dwRemoteAddr == inet_addr("127.0.0.1")
问题似乎是因为我安装了一个拦截我的流量的 AV,所以我得到的是 AV 的 PID 而不是启动连接的原始应用程序。
chrome -> av wfp -> httpserver
在不向 AV 添加排除项的情况下,有没有一种方法可以检索启动请求的原始进程的 PID,而不是像 AV 网络过滤器这样的转发器?
提前致谢。
回答我自己的问题:
Chrome -> AV -> 世界粮食计划署
如果 AV (Xport) -> (Yport)WFP
通常:
Chrome (Xport -1) -> WFP.
这对我有用。