递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库

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

查看数: 1762 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-4-28 13:39

正文摘要:

主要还是火山PC调用DLL文件时要传参数,把dll中的函数弄到火山里面时不知道该怎么写类型,头大。 例如: if (pcap_findalldevs(&alldevs, errbuf) == -1) { 这个&alldevs用取变量地址不行,是个结构,要用类表达 ...

回复

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-24 12:29:48
server 发表于 2025-4-28 17:15
让我猜猜实现过程。
1、创建原始套接字。
2、bind() 指定网卡。

谢谢,有空我试试
曼菲士 发表于 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++不够熟是个问题,慢慢研究看了。
server 发表于 2025-4-28 17:15:30
让我猜猜实现过程。
1、创建原始套接字。
2、bind() 指定网卡。
3、此时你会源源不断的得到recv消息。
yes or no ??

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-7-5 05:20 , Processed in 0.092071 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表