驱动开发-应用层代理如何获取wfp实现的连接重定向的原始的连接地址

问题描述

应用层代理如何获取wfp实现的连接重定向的原始的连接地址

any helps will be thanks!

I have searched a lot of question,but still can't find a real answer,my goal is to get the original connect address.Some body suggest to walk previousVersion in FWPS_CONNECT_REQUEST0 structure,but not point how to walk and how to make it work,also how to access it in user mode or proxy service.I have known how to query the original connect address in windows 8,but I have no idea about windows 7.I have made the code like this:

 #if(NTDDI_VERSION >= NTDDI_WIN8)

    //SOCKADDR_STORAGE*     pSockAddrStorage = 0;

    if((*ppRedirectData)->redirectHandle)
        pConnectRequest->localRedirectHandle = (*ppRedirectData)->redirectHandle;

    HLPR_NEW_ARRAY(pSockAddrStorage,
        SOCKADDR_STORAGE,
        2,
        TUNNEL_CALLOUT_DRIVER_TAG);
    HLPR_BAIL_ON_ALLOC_FAILURE(pSockAddrStorage,
        status);

    /// Pass original remote destination values to query them in user mode
    RtlCopyMemory(&(pSockAddrStorage[0]),
        &(pConnectRequest->remoteAddressAndPort),
        sizeof(SOCKADDR_STORAGE));

    RtlCopyMemory(&(pSockAddrStorage[1]),
        &(pConnectRequest->localAddressAndPort),
        sizeof(SOCKADDR_STORAGE));

    /// WFP will take ownership of this memory and free it when the flow / redirection terminates
    pConnectRequest->localRedirectContext     = pSockAddrStorage;
    pConnectRequest->localRedirectContextSize = sizeof(SOCKADDR_STORAGE) * 2;

#endif

But I don't know how to coding on windows 7,because everybody knows on windows 7,the code of pConnectRequest->localRedirectContext is unaccessable.Is any body have any idea?thanks very much!

Also,I want to show my idea,on windows 7,I solve this question like this:store the original address by myself in drivers,after the proxy accept a connect from drivers redirect,I get the tcp source port,and I use the tcp source port to query in drivers by using DeviceControl function,but if the system have kaspersky software working,the tcp source port will be changed by kaspersky,so I can't get the right tcp source port,and ofcourse the proxy can't work correct.

解决方案

参考

解决方案二:

时间: 2024-08-31 19:28:34

驱动开发-应用层代理如何获取wfp实现的连接重定向的原始的连接地址的相关文章

PCI设备驱动开发

 PCI设备驱动开发 1. PCI 简介     PCI 总线标准是一种将系统外部设备连接起来的总线标准,是 PC 中最重要的总线,实际上是系统的各个部分如何交互的接口.传输速率可达到 133MB/s.在当前的 PC 体系结构中,几乎所有的外部设备采用的各种各样的接口总线,均是通过桥接电路挂接到 PCI 系统上.在这种 PCI 系统中, Host/PCI 桥称为北桥,连接主处理器总线到基础 PCI 局部总线. PCI 与其他总线的接口称为南桥,其中南桥还通常含有中断控制器.IDE 控制器.USB

基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号

每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含着CPU的生产日期,版本号,型号等等,那么,在我们的这款友善之臂Tiny4412的板子上,我的这个CPU的ID又是多少呢?从我在光盘里拿到的linux-3.5内核其实已经将ID相关的驱动开发好了,我们在内核启动的过程中就可以看到板子CPU的ID:     看下图,我们看到CPU EXYNOS4412 (Id 0xe4412011).这个就是我板子上CPU的ID号.其它跟我相同的板子,虽然CPU也是相同的,但是板子的ID号会

USB WDM驱动开发实例 bulkusb

参考书籍<<Windows驱动开发技术详解>> 1.该示例介绍如何进行USB驱动的开发. 它全面地支持了即插即用的处理, 也很全面地支持了电源管理,同时很好地支持了USB设备的bulk读写. 如果从头开发 USB 驱动,往往很难达到USB驱动的稳定性,所以建议在此驱动修改基础上进行USB驱动开发.     2.功能驱动与物理总线驱动 程序员不需要了解USB如何将请求化成数据包等细节,只需要指定何种管道,发送何种数据即可. 当功能驱动想向某个管道发出读写请求时,首先构造请求发给USB

度量驱动开发

在意大利罗马召开的DevOpsDays上,我进行了题目为"度量驱动开发"的演讲,这篇文章以演讲内容为基础. 如今,IT世界里的发布已经变成几小时内的事情,甚至几分钟就能完成.所有的内容都要垂直伸缩.水平扩展.因此,有一个良好的监控系统是必需的.在很多IT组织里,应用是业务的核心.但监控却由不写应用的OPS(运维)团队单独去做.为什么会这样?如果是这样的话,为什么需要改变?又该如何去改变?怎样才能得到更好的结果呢?在这篇文章里,我将分享我的想法和来自于我和DEV(开发)团队一起工作的经验

进一步认识度量驱动开发

如今,IT世界里的发布已经变成几小时内的事情,甚至几分钟就能完成.所有的内容都要垂直伸缩.水平扩展.因此,有一个良好的监控系统是必需的.在很多IT组织里,应用是业务的核心.但监控却由不写应用的OPS(运维)团队单独去做.为什么会这样?如果是这样的话,为什么需要改变?又该如何去改变?怎样才能得到更好的结果呢?在这篇文章里,我将分享我的想法和来自于我和DEV(开发)团队一起工作的经验--让度量变得有意义. 本文描述的观点来自我在Adform公司任职IT架构师(联系开发团队和运维团队)的工作经验.Ad

初试驱动---OV511+摄像头驱动开发

本篇适合没有接触过驱动或者初学驱动的朋友.运行本程序以及源代码都请先看 ReadMe.txt 文件. 在本文中阐述的驱动是用windriver做出来的,没有采用DDK或DriverStudio,可能看起 来并不像是一个"很正式"的驱动,而且本文中的驱动程序不可以用于 DirectShow接口.对于DDK和DriverStudio我也了解了一些内容,在刚开始的时候我是满 怀激情的想用DDK或DriverStudio的,很快我的激情之火就被无情的熄灭了,对于一个完 全没有接触过驱动开发的人

VC文件过滤系统驱动开发Filemon学习笔记

WINDOWS文件过滤系统驱动开发,可用于硬盘还原,防病毒,文件安全防护,文件加密 等诸多领域.而掌握核心层的理论及实践,对于成为一名优秀的开发人员不可或缺. WINDOWS文件过滤系统驱动开发的两个经典例子,Filemon与SFilter,初学者在经 过一定的理论积累后,对此两个例子代码的研究分析,会是步入驱动开发殿堂的重要一步 ,相信一定的理论积累以及贯穿剖析理解此两个例程后,就有能力开始进行文件过滤系统 驱动开发的实际工作了. 对于SFilter例子的讲解,楚狂人的教程已经比较流行, 而F

Linux系统驱动开发调试技术指南

  一.使用printk 这是驱动开发中最朴实无华,同时也是最常用和有效的手段.scull驱动的main.c第338行如下,就是使用printk进行调试的例子,这样的例子相信大家在阅读驱动源码时随处可见. printk(KERN_ALERT "wakeup by signal in process %dn", current->;pid); printk的功能与我们经常在应用程序中使用的printf是一样的,不同之处在于printk可以在打印字符串前面加上内核定义的宏,例如上面例

WinCE USB驱动开发经验谈

WinCE USB驱动开发经验谈 随着USB2.0设备的不断增加,USB设备驱动开发在嵌入式开发中变的越来越重要.Windows CE支持USB 2.0更是对这一波新技术浪潮产生巨大的推动.近期我负责一个这样的项目,在WinCE下开发USB接口的外围设备驱动.当时做这个项目花费了我相当多的时间和精力,错走许多冤枉路使我精疲力尽. 项目需求是在已调好的ARM9板子上开发USB WiFi无线网卡的驱动程序,具体要求是驱动程序平台是WinCE,CPU类型支持ARM构架,要能比较方便地移植到X86:驱动