问题标签 [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.

0 投票
1 回答
825 浏览

c++ - 如何从内核模式 WFP 标注驱动程序调用 NtUserPostMessage?

为了将 WFP(Windows 过滤平台)标注驱动程序安装到现有产品中,我需要让它向现有应用程序发送窗口消息。有没有办法从内核模式 WFP 驱动程序执行此操作?

这里有一种从内核模式驱动程序调用 NtUserPostMessage 的技术,但我不确定它是否适用于 WFP 驱动程序并且它早于 Windows 8,因此它没有新操作系统的正确系统调用地址。

我愿意接受任何发送窗口消息的方法(或者更准确地说,发布它们以便不会有延迟),因为它可以让我不必重新编码现有应用程序的一部分。

0 投票
2 回答
4153 浏览

filter - Windows 筛选平台用户模式还是内核模式?

我正在使用 Windows 过滤平台。我想创建一个流量过滤器、安全管理器,它监视数据包和网络事件或阻止 url...我知道大多数 WFP 函数都可以从用户模式或内核模式调用。我想知道是使用内核模式函数还是用户模式函数来编写我的过滤器?是否有任何类型的网络操作只能通过使用内核模式驱动程序来捕获?请在这方面帮助我。

提前感谢您对此事的任何帮助

0 投票
1 回答
451 浏览

windows - WFP 内核模式驱动程序的 DriverEntry 在某些机器上的调用方式不同?

我已经为我自己的应用程序向 Windows 过滤平台 MSNMNTR 示例添加了一些代码,但它仍然具有相同的结构。我已经为 Win8 64 位编译了驱动程序和应用程序,并对驱动程序进行了生产签名。在我构建代码的(虚拟)机器上,该示例工作正常并且可以正确监控。当我将 inf、sys 和 exe 复制到另一台机器时,示例不会监控。通过 traceview 输出,我可以看到在第二台机器上,没有调用 DriverEntry(),因此从未设置过流控制。两台机器都运行的是Win8的发布版。这似乎不是我的新代码的问题,因为驱动程序在 #1 机器上运行良好,而且它似乎不是签名问题,因为当我关闭机器 #2 上的签名强制时,我仍然有问题。代码的发布版本和调试版本都有相同的问题。我用来设置和运行代码的步骤如下。有哪些事情可能会导致这种行为?

  1. 将驱动程序 .pdbs 复制到 traceview 的文件夹中。
  2. 右键单击 .inf 并选择“安装”
  3. 从提升的命令提示符运行“net start msnmntr”。
  4. 以管理员身份启动 traceview。
  5. 从提升的命令提示符运行“monitor monitor "C:\Program Files\Internet Explorer\iexplore.exe"”。

PS我还没有把windbg放在这个上面,但我会在我尝试后立即用结果更新问题。

编辑添加:好的,我在两台机器上运行了内核模式调试器并看到了行为差异。首先,两台机器都调用了 DriverEntry。我错了。但是,在代码工作的机器上(即监控网络流量),DriverEntry 在 monitor.exe 运行时被调用(上面的第 5 步),而在代码不工作的机器上,DriverEntry在“net start msnmntr”时被调用(上面的步骤 3) 被执行。

0 投票
2 回答
3840 浏览

visual-studio - Windows 驱动程序开发:Visual Studio 2012 中缺少部署选项

我试图编译和部署从 MSDN 获得的 WFP 示例,msnmntr同样的问题适用于所有示例。

此示例和所有示例都无法部署,因为Visual Studio 2012 Ultimate 中缺少文档中的一个步骤。

它说:

1) 打开驱动程序包的属性页。在解决方案资源管理器中右键单击驱动程序包项目,然后选择属性。

2) 在驱动程序包的属性页中,单击配置属性,单击驱动程序安装,然后单击部署。

但是,您可以在下面的屏幕中看到 Visual Studio 2012 中没有这样的选项:

在此处输入图像描述

我想知道我做错了什么。

0 投票
3 回答
3516 浏览

windows - 内核模式驱动程序和用户模式应用程序之间的双向通信?

我需要内核模式 WFP 驱动程序和用户模式应用程序之间的双向通信。驱动程序通过将 URL 传递给应用程序来启动通信,然后应用程序对该 URL 进行分类(娱乐、新闻、成人等)并将该类别传递回驱动程序。驱动程序需要知道过滤功能中的类别,因为它可能会根据该信息阻止某些网页。我在应用程序中有一个线程正在发出 I/O 请求,驱动程序将使用 URL 和 GUID 完成,然后应用程序会将类别写入该 GUID 下的注册表中,驱动程序将在其中提取它。不幸的是,正如驱动程序验证者所指出的那样,这是不稳定的,因为 Zw 注册表函数必须在 PASSIVE_LEVEL 运行。我正在考虑用映射的内存缓冲区尝试同样的事情,但我不确定中断要求是什么。另外,我想过在注册表函数调用之前降低中断级别,但我不知道这样做的副作用是什么。

0 投票
1 回答
574 浏览

kernel - 在 WFP 中标注的分类 Fn 中指定的 IP 地址的字节顺序是什么?

在标注的classifyFn中,可以使用以下代码获取远程IP地址:

或者

但是,我找不到任何文档来指定来自 MSDN、OSR 等的 IP 地址的“字节顺序”。

以下链接与我的问题相同,但没有答案。

http://www.osronline.com/showthread.cfm?link=225090he

0 投票
1 回答
335 浏览

c - “否决”和“硬块”有什么区别?

以下代码是否称为“否决”、“硬块”或两者兼而有之?

有关此问题的文档含糊不清。

请访问: http: //msdn.microsoft.com/en-us/library/windows/desktop/aa364008 (v=vs.85).aspx

0 投票
1 回答
413 浏览

virtualization - 检查 WFP 中 FWPM_LAYER_EGRESS_VSWITCH_TRANSPORT_V4 层的标注驱动程序中的数据

我正在为 Hyper-V 2012 编写标注驱动程序,我需要在其中过滤从虚拟机发送的数据包。

我在 WFP 的 FWPM_LAYER_EGRESS_VSWITCH_TRANSPORT_V4 层添加了过滤器。标注函数接收数据包缓冲区,我将其转换为 NET_BUFFER_LIST。我正在执行以下操作以获取数据指针

pNetBuffer = NET_BUFFER_LIST_FIRST_NB((NET_BUFFER_LIST*)pClassifyData->pPacket); pContiguousData = NdisGetDataBuffer(pNetBuffer, NET_BUFFER_DATA_LENGTH(pNetBuffer), 0, 1, 0);

我有简单的客户端-服务器应用程序来测试数据包数据。客户端在虚拟机上,服务器是另一台机器。正如我所观察到的,从客户端发送到服务器的数据被截断,最后添加了一些垃圾值。从服务器向客户端发送消息没有问题。如果我不添加此层过滤器客户端服务器工作没有任何问题。

回调函数接收包含 ipHeaderSize 和 transportHeaderSize 的元数据。这两个值都为零。这些是正确的值还是应该是非零的?有人可以帮我在标注功能中从数据包中提取数据并将其安全地转发到其他层吗?

谢谢你。

0 投票
1 回答
6677 浏览

wfp - 如何将您的防病毒软件设置为 Window 的默认防病毒程序?

我开发了一款防病毒软件,但是如何将其设置为默认防病毒软件并让 Windows 停止显示丢失的防病毒信息?

0 投票
1 回答
2417 浏览

windows - NDIS 协议驱动程序(WinPcap 的 npf.sys)能否移植到 LWF 或 WFP?

每个人。我正在为 WinPcap 做一些改进。现在我已将 npf.sys 驱动程序从 NDIS5.0 移植到 NDIS6.0。这个驱动是否还有改进的空间,比如移植到 LWF(Light-Weight Filter)或 WFP(Windows Filter Platform)?我们只是想确保使用更新更好的框架。

这里还有一些其他问题:

好像LWF是Vista时代的产品,现在微软很少提及,是真的吗?

LWF 或 WFP 驱动程序可以做 NDIS 协议驱动程序可以做的事情吗?

LWF 或 WFP 是否与 WDF(Windows 驱动程序框架)有关,或者与 WDF 和 WDM 框架兼容?

如果移植可行,难度如何,我之前开发了一些 NDIS 中级驱动程序,LWF 或 WFP 比那更难还是更容易?

谢谢!