-
-
[旧帖]
[求助]实现内核级端口复用的技术准备
0.00雪花
-
发表于:
2013-1-5 20:26
5588
-
[旧帖] [求助]实现内核级端口复用的技术准备
0.00雪花
我想在Windows系统内核里实现端口复用,目前只具备一些内核编程的基本概念,另外在网上搜了一些资料,下面就说一下我的思路吧:
首先,端口复用只针对特定客户端IP实现,当任意IP向已开放的端口发送了特殊字符串时,该IP就被作为特定IP,驱动将它的流量都转发到本地的其他指定端口上。例如,机器S开放了80和1433,但是网络防火墙拦截了1433,只有80对外开发。在机器S上安装端口复用工具,从客户端C向S的80端口发送一个标识字符串,那么所有来自客户端C的流量都自动转发到1433端口上,至于为何是1433端口,可以在机器S上运行一个app来指定。
一开始我想到的是在NDIS层写,但是对NDIS基本是一无所知。而且考虑到端口复用基本是需要在协议的基础上实现,因此觉得用TDI接口来实现可能更合适。
在搜索过程中找到一个开源项目tdi_fw,它可以在tdi hook的方式下实现防火墙基本功能,而且有人在它的基础上经过修改实现了tdi hook,按理说我只需要把他的代码详细分析一下,稍作修改就能实现这个功能。
但是由于之前未接触过实际的驱动开发,现在有一些很基本的问题需要弄清楚:
1.这个想法可以在WDK的KMDF框架下实现吗?也就是说利用KMDF实现tdi hook?
2.如果我需要我的驱动能够在64位环境下正常运行,不考虑数字签名问题,除了要使用不同环境来编译外,在编码的时候是否有其他问题需要特别注意?
3.我的上述想法有没有不合理的地方,还请大牛指教。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课