曼菲士 发表于 2025-4-28 13:39:37

用C++弄了个NPCAP抓进程通讯IP的程序,不知道怎么转成火山



主要还是火山PC调用DLL文件时要传参数,把dll中的函数弄到火山里面时不知道该怎么写类型,头大。
例如: if (pcap_findalldevs(&alldevs, errbuf) == -1) {
这个&alldevs用取变量地址不行,是个结构,要用类表达,但是类里面好几个类型又要用指针,想到头发都掉了。
不知有没有高手帮忙转成火山PC代码,学习学习,万分感谢。:handshake

server 发表于 2025-4-28 17:15:30

让我猜猜实现过程。
1、创建原始套接字。
2、bind() 指定网卡。
3、此时你会源源不断的得到recv消息。
yes or no ??

曼菲士 发表于 2025-4-30 11:35:30

server 发表于 2025-4-28 17:15
让我猜猜实现过程。
1、创建原始套接字。
2、bind() 指定网卡。


这个程序类似Process Monitor,主要是想采集某些进程的通讯IP以便判断是否有问题,做IP记录,剔除不必要的进程,微软的Process Monitor虽然也能达到这个效果,但是内存占用实在太大了,时间长就会因内存满而停止工作,用AI弄了个C++的虽然能用,但是c++的UI实在太烂了,不想花太多时间在UI上,本想把c++这段搬到火山PC上试试,发现有不少难点,对c++不够熟是个问题,慢慢研究看了。

曼菲士 发表于 2025-5-24 12:29:48

server 发表于 2025-4-28 17:15
让我猜猜实现过程。
1、创建原始套接字。
2、bind() 指定网卡。


谢谢,有空我试试

server 发表于 2025-5-24 13:06:06

本帖最后由 server 于 2025-5-24 13:17 编辑

创建原始套接字需要管理员权限。
使用的函数 就是: socket(); 具体参数你问问AI。
取出要绑定的 网卡指定的 IP。
正常绑定即可,调用API : bind(s,IPaddr,len);

非常简单的。

这个时候你调用返回实际长度 =recv(s,缓冲区指针,缓冲区长度,标志)得到的是原始 报文。
你还要分析这些报文属于哪个进程。
总的来说,还是比较复杂的、

你可以把 SRSniffer 拖到 OD 里,看看他是如何实现的。

你如果技术有限,
你还可以使用全局钩子,写2个DLL,32、64位。
直接HOOK connect connectEX wsaconnect 这是针对客户端。
服务端接受连接是:accept acceptEX WSAaccetp这3个函数 hook 有点麻烦。总结是:执行原函数后取错误值,在return 之前 置回错误值、

其他问题可以继续论坛提问,他们还是很厉害的。

曼菲士 发表于 2025-5-26 16:11:12

本帖最后由 曼菲士 于 2025-5-26 16:19 编辑


问过AI,提供的C++代码能获取到通讯IP,但不知道是哪个进程发送的,若要知道进程ID,就牵扯到NPCAP驱动之类的了,按照AI要求安装好NPCAP,也能获取到进程ID和对应的通讯远程IP和端口,但是移植到火山PC又成了问题,太多东西要整,弄成DLL也不行,头大,所以先弄了个netstat命令行版,然后再研究纯API的试试。
2025-05-26 15:14:57 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36284 - 47.117.111.226:443
2025-05-26 15:14:56 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36280 - 222.218.190.225:443
2025-05-26 15:14:56 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36279 - 222.218.193.228:443
2025-05-26 15:14:56 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36276 - 171.107.77.118:443
2025-05-26 15:14:55 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36275 - 222.217.93.48:443
2025-05-26 15:14:55 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36272 - 47.117.121.50:443
2025-05-26 15:14:54 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36266 - 184.30.131.245:80
2025-05-26 15:14:54 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36264 - 222.217.93.47:443
2025-05-26 15:14:54 新增 - dnplayer.exe 进程ID【10372】 服务名称【】TCP 192.168.2.37:36227 - 119.147.19.143:80
2025-05-26 15:13:06 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:35053 - 34.107.243.93:443
2025-05-26 15:13:00 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:36062 - 14.17.85.116:8081
2025-05-26 15:12:42 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:36024 - 106.127.133.63:80
2025-05-26 15:08:12 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:35611 - 124.236.26.161:80
2025-05-26 15:08:11 新增 - firefox.exe 进程ID【16224】 服务名称【】TCP 192.168.2.37:34591 - 113.96.184.1:443
2025-05-26 15:05:20 新增 - pcaspac.exe 进程ID【22400】 服务名称【】TCP 192.168.2.37:35064 - 35.186.227.140:443
2025-05-26 15:05:20 新增 - pcaspac.exe 进程ID【22400】 服务名称【】TCP 192.168.2.37:35056 - 34.107.141.31:443
2025-05-26 15:05:20 新增 - pcaspac.exe 进程ID【22400】 服务名称【】TCP 192.168.2.37:35055 - 34.117.14.220:443
2025-05-26 15:05:19 新增 - pcaspac.exe 进程ID【22400】 服务名称【】TCP 192.168.2.37:35054 - 34.110.207.168:443
2025-05-26 15:05:17 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:35056 - 34.107.141.31:443
2025-05-26 15:05:16 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:35055 - 34.117.14.220:443
2025-05-26 15:02:22 新增 - firefox.exe 进程ID【16224】 服务名称【】TCP 192.168.2.37:35059 - 40.126.35.151:443
2025-05-26 15:01:40 新增 - 360chromex.exe 进程ID【22392】 服务名称【】TCP 192.168.2.37:34914 - 14.152.80.126:8081
2025-05-26 15:01:28 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:34914 - 14.152.80.126:8081
2025-05-26 15:01:13 新增 - wechatappex.exe 进程ID【20196】 服务名称【】TCP 192.168.2.37:34891 - 101.89.49.171:443
2025-05-26 14:59:13 新增 - svchost.exe 进程ID【4636】 服务名称【CryptSvc】TCP 192.168.2.37:34695 - 120.240.128.66:80
2025-05-26 14:58:13 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:34594 - 124.236.26.172:80
2025-05-26 14:58:10 新增 - wps.exe 进程ID【9092】 服务名称【】TCP 192.168.2.37:34591 - 113.96.184.1:443
2025-05-26 14:54:37 新增 - phoneexperiencehost.exe 进程ID【18884】 服务名称【】TCP 192.168.2.37:34228 - 123.151.48.171:8080
2025-05-26 14:54:37 新增 - phoneexperiencehost.exe 进程ID【18884】 服务名称【】TCP 192.168.2.37:34208 - 119.147.19.143:80
2025-05-26 14:54:25 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:34228 - 123.151.48.171:8080
2025-05-26 14:53:55 新增 - svchost.exe 进程ID【4608】 服务名称【DiagTrack】TCP 192.168.2.37:34183 - 104.46.162.226:443
2025-05-26 14:48:43 新增 - wpscloudsvr.exe 进程ID【13904】 服务名称【】TCP 192.168.2.37:33685 - 124.236.26.168:80
2025-05-26 14:46:28 新增 - svchost.exe 进程ID【4944】 服务名称【WpnService】TCP 192.168.2.37:33471 - 14.18.251.123:80
用netstat得到的信息都能满足我的期望,研究纯API就要花不少时间了。


页: [1]
查看完整版本: 用C++弄了个NPCAP抓进程通讯IP的程序,不知道怎么转成火山