gpt4 book ai didi

c++ - 如何使用 Winsock LSP 修改出站 UDP 流量?

转载 作者:可可西里 更新时间:2023-11-01 10:48:50 27 4
gpt4 key购买 nike

我正在构建一个应用程序,它需要在 DHCPv6 数据包到达线路之前对其进行动态修改。我正在使用 DHCPv6 供应商选项做一些非常专有的工作,我需要能够在传输之前检查和修改内存中的这些选项。

我通过修改 Microsoft 示例代码在 Winsock 之上构建了一个概念验证分层服务提供程序。它拦截传出的 HTTP 数据包,将 referrer-agent 更改为有趣的东西,然后按原样发送数据包。在 Wireshark 中验证,效果很好。

更改我的安装程序代码也很简单,这样我的 LSP 就可以链接到 UDP/IPv6 而不是 TCP/IPv4 之上,现在,在附加调试器的情况下,我可以看到自己获得了带有堆栈的回调DHCP 服务器。但是,我再也看不到内存中的缓冲区。

WSPSendWSPConnect 不会被调用,因为我们使用的是无连接协议(protocol)——这是有道理的。我确实在 WSPSendTo 中获得了一致的回调,但是 lpBuffers 成员(在我的 HTTP 原型(prototype)中包含表示传出数据包的缓冲区)是 NULL

我是不是以完全错误的方式解决了这个问题,还是我需要覆盖另一个 Winsock 操作?如果 LSP 是错误的选择,我很乐意转向另一个方向,但对于这个应用程序来说,外部图书馆是一个非常艰难的销售——否则,我会考虑 Winpcap。

编辑:哇,这是很久以前的事了。对于那些支持我的人来说,这最终效果很好。我不好意思地说,问题是我在编译时进行了优化,这使我无法在调试器中看到正确的数据。当我不再偷懒并将字节转储到一个文件时,我发现一切都很好。

最佳答案

LSP 确实只能拦截 Winsock 流量,DHCP 在较低层,你需要不同的技术来做到这一点,例如:NDIS、TDI(Will not work on Win8)或 WFP(Will not work on XP)

关于c++ - 如何使用 Winsock LSP 修改出站 UDP 流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com