首页
社区
课程
招聘
NDIS中间层驱动自定义收包的问题
2017-2-25 17:42 3030

NDIS中间层驱动自定义收包的问题

2017-2-25 17:42
3030

先说说我目前在干啥:

基于wdk例子passthru扩展, 在PtReceivePacket与PtReceive两个函数里截获收包,判断是否需要过滤,如果需要过滤,就自定义一个数据包上传,因为不太熟悉NDIS,所以自己研究了下,我是这样想的:先申请一块内存用作自定义数据包的缓冲,填好自定义数据后,申请一个新的packet,将packet与缓冲区关联起来,然后上传。但这样就出现了问题,我申请的内存不知道应该在哪里释放,这样就会造成内存泄漏。一直很苦恼


各位大神们如果研究过这个,请问下你们是怎么上传自定义数据包的的呢?


[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 221
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ntoskrnlwin 2017-3-16 16:20
2
0
自定义的包需要加入标识,在你收包完成的时候根据标识找出来,然后释放你自定义包使用的内存 用包描述符的ProtocolReserved作标识
雪    币: 490
活跃值: (1872)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
我是哥布林 2017-3-16 20:16
3
0
在MPReturnPacket里面,Miniport上交的内存或你的passthru上交的内存在上层完成传输以后会返回使用权(调用MPReturnPacket)。在你的MPReturnPacket里面用NdisGetPoolFromPacket进行判断,如果是得到的Handle是miniport的pool就向下交付,否则说明是passthru的pool,由你自己手动释放。
游客
登录 | 注册 方可回帖
返回