WFP开发学习笔记.docx

WFP开发学习笔记.docx

ID:57843905

大小:164.48 KB

页数:3页

时间:2020-09-02

WFP开发学习笔记.docx_第1页
WFP开发学习笔记.docx_第2页
WFP开发学习笔记.docx_第3页
资源描述:

《WFP开发学习笔记.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WFP开发学习笔记:1.如何关联数据(路径、进程ID等)到其他层?答:使用函数FwpsFlowAssociateContext。2.FlowContext关联的数据是否可以关联到FWPS_LAYER_*任意层?答:经过实践测试,发现数据可以关联到TRANSPORT以上层,但不能关联到IPPACKET层(原因未知,微软没有给出明确说明)。3.TRANSPORT层是否包含了IP头?答:发送时MDL中部分包含IP头,部分不包含IP头(原因未知,也可能是数据从应用层往下传时,系统还未加上IP头信息)。接收时MDL中都包含有IP头。4.IPPACKET层是否包

2、含了IP头?答:发送时OUTBOUND,MDL中全部包含了IP头,MDL的偏移量与数据长度都正确。接收时INBOUND,MDL中全部包含了IP头,但MDL的偏移量与数据长度不匹配(原因未知)。且接收时微软默认把IP头给隐藏了(原因未知),可以通过修改偏移量来获取有效IP头。具体变量为:NetBuffer->DataLength(真实长度),NetBuffer->CurrentMdlOffset(真实偏移地址,如果需要获取IP头,需要前移),Mdl->ByteCount(此数据接收时不准,需根据实际数据长度去获取数据,类似UNICODE_STRING)

3、。5.接收时MDL中的偏移量与数据长度不匹配该如何调整,获取有效数据?答:通过函数NdisRetreatNetBufferDataStart前移偏移地址。通过函数NdisAdvanceNetBufferDataStart还原便宜地址。通过函数NdisGetDataBuffer或者自己写获取数据函数。记得需要判断偏移地址CurrentMdlOffset所在的MDL,和实际的数据长度。6.FWPM_LAYER_ALE_AUTH_CONNECT_V4与FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4的区别。答:FWPM_LAYER_AL

4、E_AUTH_CONNECT_V4不带数据包,只是一个发起连接的动作,里面不能进行数据拦截操作。FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4带有数据包,里面可以进行数据拦截操作。7.可否修改IP数据包?答:可以修改IP数据包。修改IP包信息,在IPAPCKET层。修改TCP/UDP包信息,在TRANSPORT层。修改数据包体,在ALE层即可。8.可否获取整个IP包数据?答:不能获取MAC包数据,WFP只支持获取IP头以后的数据。后面的WDK版本可能支持获取MAC包数据。9.新接触WFP该参考哪些资料?答:参考D:WinDDK

5、7600.16385.1srcetworktrans目录下的工程,或者参考看雪上面的例子,还有寒江的第15章(入门用)。10.WFP启动/结束流程图:(图1)11.FlowContext操作流程和注意事项?答:要关联Context,注册callout时必须有Deletion回调函数,否则关联会失败。1.创建Context。2.添加到Context链表。3.关联Context。4.在指定层通过参数UINT64flowContext获取Context。5.使用Context。6.Context生命周期结束时,系统会自动调用Deletion回调函

6、数,你需要在此从链表删除并释放内存。7.驱动卸载时,通过执行FwpsFlowRemoveContext,将没有销毁的Context销毁掉。调用FwpsFlowRemoveContext后,删除过程还会出现在Deletion回调函数中(注意)。12.个人对WFP的简单理解:注册一组回调函数,所有进出网络数据系统都会调用这组回调函数,你在里面进行逻辑判断,得出结果BLOCK/PERMIT,系统根据你提供的结果进行拦截/放行。13.WFP常用函数FwpsInjectionHandleCreateFwpsInjectionHandleDestroyFwpsQ

7、ueryPacketInjectionStateFwpmEngineOpenFwpmEngineCloseFwpmTransactionBeginFwpmTransactionCommitFwpmTransactionAbortFwpsCalloutRegisterFwpmCalloutAddFwpmSubLayerAddFwpmFilterAddFwpsCalloutUnregisterByIdFwpsFlowAssociateContextFwpsFlowRemoveContextMmGetSystemAddressForMdlSafe(图1)(

8、图2)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。