问题标签 [wfp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 如何动态获取 WFP 例程地址?
我正在为WinXP(使用 TDI 技术)和win7(使用 WFP 技术)编写 Windows 网络过滤器驱动程序,我希望该驱动程序与 WinXP 和 Win7 兼容。
因为WFP只能从 vista 和更高版本获得,所以我必须动态获取WFP例程(例如:FwpmEngineOpen0,FwpsCalloutRegister0)地址,否则驱动程序无法在 WinXP 下加载。
但是当我使用MmGetSystemRoutineAddress尝试获取FwpmEngineOpen0例程地址时,Win7 下例程总是返回 0。
MSDN 说:“ MmGetSystemRoutineAddress ... 驱动程序可以使用此例程来确定某个例程是否在特定版本的 Windows 上可用。它只能用于内核或 HAL 导出的例程,不能用于任何驱动程序定义的例程。 "
那么,是不是MmGetSystemRoutineAddress不能获取WFP例程地址?
如果我想动态获取WFP例程地址,我该如何解决这个问题?
感谢您提供的任何帮助!
c++ - 授予单个程序访问权限,同时阻止所有其他程序 (WFP)
使用 Windows 过滤平台我需要阻止所有计算机应用程序减去 1 个特定应用程序?
尝试了此代码但不起作用,它会阻止所有流量:(
提前致谢
tcp - WinDivert 过滤器,用于阻止所有 TCP 连接,IP 除外
我正在尝试编写一个与WinDivert一起使用的过滤器,以阻止除 IP 之外的所有 TCP 连接。
当我写
它阻止所有连接。但是当我写
一切仍然被阻止,IP地址未打开。
我认为我的过滤器不正确,任何帮助将不胜感激。
谢谢
kernel - 希望在有人删除我的过滤器时收到通知
我有 WFP 驱动程序,我在其中过滤网络事件,使用 FwpmFilterAdd 添加过滤器,但某人/应用程序可能会使用 FwpmFilterDeleteByKey0 删除我的过滤器。我想收到有关我的过滤器删除的通知。可以做到吗?
我可以看到有用于用户模式跟踪 FwpmFilterSubscribeChanges0 的 API,但没有找到内核模式
windows - 从绑定重定向中排除本地主机
我正在使用WFPSampler通过以下命令将所有流量重定向到特定接口:
这工作得很好,来自所有进程的流量都按预期重定向。唯一的问题是它也将127.0.0.1绑定到10.0.2.15,然后一些应用程序无法连接。
例如,我在127.0.0.1:8000上创建了简单的 Python HTTP 服务器,但我无法使用该地址通过浏览器访问它。
我知道FWPM_LAYER_ALE_BIND_REDIRECT_V4
只能按本地地址过滤,但此时我必须以某种方式按远程地址过滤以避免将 localhost 绑定到10.0.2.15
c++ - 错误代码 WFP:状态错误(活动)E0513 “const wchar_t *”类型的值无法分配给“wchar_t *”类型的实体
我正在使用 Visual Studio Community 2019、SDK 和 WDK 预览版。
E0513 “const wchar_t *”类型的值不能分配给“wchar_t *”类型的实体。
如何解决?
代码世界粮食计划署如下:
E0513 “const wchar_t *”类型的值不能分配给“wchar_t *”类型的实体
c++ - 使用 WFP 过滤器允许端口和 ip 对
我希望有防火墙将我的设备与网络隔离,但我希望允许的少数端口/ip 对除外。
例如,为了允许某些端口(对于所有 IP 地址),我使用以下过滤器:
FWPM_FILTER_CONDITION0 条件[2];
此过滤器允许具有单个目标端口的数据包,而不管其 ip。如何将特定 ip 添加到过滤条件?
谢谢
windows - 如何在 Windows 上实现每个应用程序的路由行为?
我在 Windows 10 桌面(使用 OpenVPN)中运行 VPN,VPN 是默认网关,因此默认情况下所有流量都通过 VPN 隧道。
但是,我想将某些应用程序从 VPN 中排除,以便它们的流量通过 VPN 直接从物理接口流出(所谓的“拆分隧道”)
我假设此解决方案将涉及 WFP(Windows 过滤平台)API,并且可能与 Windows 等效
我目前通过“cgroups”和基于策略的路由/多个路由表在 Linux 中工作。
但据我了解,Windows 既没有基于策略的路由,也没有多个路由表。但我仍然可以想办法在 Windows 中实现这一点,但我找不到实现它的 API
一种方法是挂钩特定应用程序的套接字创建,然后使用 Windows 等效的SO_BINDTO_DEVICE
套接字选项 ( setsockopt()
) 来强制套接字绑定到物理接口而不是 Tap 驱动程序。
但是,同样,我找不到相关的 API 来实现上述目标。
所以我有几个问题:
(1) 我想在 WFP(Windows 过滤平台)的给定 API 或一般的 Windows API 中做些什么?如果是这样,你建议我看哪些 API?
(2) 或者,我必须编写“WFP 调用驱动程序”吗?如果是这样,您能否为我指出一些资源,以及我的特定问题的一个很好的起点?:)
(3) 还有什么我可能遗漏的吗?实现我想要的更简单的方法?我知道这在 Windows 中是可能的,因为我在某些 VPN 中看到了该功能,但我想在我自己的个人 VPN 中复制它:)
windows - 如何使用 WFP 层 ALE_BIND_REDIRECT?
我找不到任何关于如何使用ALE_BIND_REDIRECT
Windows 过滤平台 (WFP) 层的示例代码。
我确实需要重写源 IP,但我不知道如何使用这一层。有人可以解释如何使用ALE_BIND_REDIRECT
图层来实现这一点吗?
windows - 如何将数据传递给我的 WFP 标注驱动程序?
我在FWPM_LAYER_ALE_BIND_REDIRECT_V4
图层上有一个 WFP 标注和一个过滤器。
我希望能够将一些数据传递到此标注(例如 IP 地址)中,以便我的标注驱动程序可以使用它。
我曾尝试使用“提供者上下文”,但运气不佳,pFilter->providerContext
指针总是NULL
如何将数据传递给我的 WFP 标注驱动程序?