我是内核模式 Windows 驱动程序开发的新手,并且在从 WFP 标注示例中获取调试信息时遇到问题。我正在寻找更多选项或提示我对我一直在尝试的选项做错了什么。
首先,我下载了WFP 采样器并按照说明中的说明进行操作。我正在使用通过模拟串行电缆连接的 Windows 8.1 x64 主机和 Windows 7 x64 目标。它们都是 VirtualBox 虚拟机。
我正在调试的主要命令是
WFPSampler.Exe -s PROXY -l FWPM_LAYER_ALE_BIND_REDIRECT_V4 -aaid "C:\Program Files (x86)\Internet Explorer\iexplore.exe" -pla 10.0.2.15 -v
其中 10.0.2.15 是不同网络接口的 IP 地址,而不是路由表是 endign 流量的目标。我还按照说明使用了以下检查命令:
WFPSampler.exe -s BASIC_PACKET_EXAMINATION -l FWPM_LAYER_INBOUND_IPPACKET_V4 -v
“netsh wfp show state”显示与预期层关联的标注和过滤器
但是,按照这些说明的最后一步,我从未从 traceview 收到任何消息。Tracelog 也有类似的输出不足。无论是否在驱动程序项目上启用了 WPP 跟踪,情况都是如此。我还尝试了更高的详细程度,但都没有效果。
此外,Visual Studio 中的远程调试器在“驱动程序安装后操作(x64)(可能重新启动):通过”或“等待重新连接...”处停止,重新启动目标不会导致调试器立即窗口中的更多输出(输出窗口从未得到任何输出)。重新启动目标虚拟机没有得到任何异常提示(我读到的一些内容暗示它应该)。设置调试器时的重新连接复选框有时会导致它通过“等待重新连接...”提示,其他时候不需要它。我设置了许多应该命中的断点,包括每个分类函数顶部的一个断点,但没有一个被命中。
我尝试使用 WinDbg 进行调试,但坦率地说,我找不到有关如何使用此工具的文档。我在目标机器上启动它并选择内核调试,本地。然后我得到一个提示,告诉我符号搜索路径无效并且不知道我应该将其设置为什么。如果它允许我调试这些标注驱动程序,则有关如何使用此工具而不是仅安装它的任何文档都可能会有所帮助。
最后,当然,我尝试根据症状对其进行调试,但我发现检查标注没有任何作用,而代理标注只是吃掉来自目标应用程序的所有流量,但有一点需要注意。需要注意的是,当我使用代理标注定位 firefox 或 chrome 并尝试启动该应用程序时,它无法启动 UI,并且无法从任务管理器中终止部分启动的进程。
我认为该行为可能是样本未能检查 FwpsQueryPacketInjectionState 的结果,但尽我所能进行修改似乎不会改变行为。
所以简而言之,我被卡住了,需要指导吗?