阅读:1724回复:1
TDI filter驱动实现端口隐藏的问题?
各位老大,我这乡有礼了!
希望各位高手在空闲之余关注下该贴,小弟感激不尽啊! 我一直在研究“隐藏端口”的问题,曾经与webcrazy(http://webcrazy.xilubbs.com)探讨过,也没有高清楚。我一直在想,我要自己搞定这个问题,自己去看一些关于TDI Filter驱动的资料、程序,我这段时间也确实在努力的学习,但是最后还是不能搞定,也许这对于初学驱动我来说比较难吧(我经常这么安慰自己)。通过使用TDIMoniter(来自sysinternals)检测netstat命令执行是的IOCTL Code,发现对于底层端口以及连接状态的查询主要利用了IOCTL_QUERY_INFORMATION_EX这个DeviceControl Code。但是我根本无法了解TCP Filter在处理DeviceControl Code,IOCTL_TCP_QUERY_INFORMAITON_EX的IRP的结构。我从DDK/src中的Tdiinfo.h知道了一些皮毛,但是我也不敢肯定这些结构是不是Netstat命令所用到的。 // Structure of an entity ID. typedef struct TDIEntityID { ulong tei_entity; ulong tei_instance; } TDIEntityID; // Structure of an object ID. typedef struct TDIObjectID { TDIEntityID toi_entity; ulong toi_class; ulong toi_type; ulong toi_id; } TDIObjectID; // // NT DeviceIoControl definitions for TdiExtendedInformationEx functions. // // // QueryInformationEx IOCTL. The return buffer is passed as the OutputBuffer // in the DeviceIoControl request. This structure is passed as the // InputBuffer. //这里给出的英文注释我看不太懂,该结构到底是作为IRP的inputbuffer呢,还是作为Outputbuffer的返回结果? //哪位老兄能明示一下? struct tcp_request_query_information_ex { TDIObjectID ID; // object ID to query. ULONG_PTR Context[CONTEXT_SIZE/sizeof(ULONG_PTR)]; // multi-request context. Zeroed // for the first request. }; typedef struct tcp_request_query_information_ex TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX; 我不知道这些结构是不是我们想要的,同时对于具体的字段含义以及定义,我根本无法知道。所以,在处理IRP时,Irp->AssociatedIrp.SystemBuffer或者Irp->MdlAddress的详细内容也就不知道了。我估计如果不知道这些缓冲区的结构,是无法做到端口以及连接状态隐藏的。我个人认为查询端口的信息应该在IRP的完成历程中进行过滤,发生在IRP自下向上的传递过程中,而不是在IRP自上向下传递过程中处理,因为这时还没有得到端口信息,不知道我说的对不? 另外,我看了pcausa的一个Advanced TDI Filter的例子,以及一个TDI防火墙的例子,但是,我都没有从中悟出相关的信息,还麻烦各位老兄给我指点几句啊。 小弟,恭候各位高手的指教。 |
|
最新喜欢:zhuwg |
沙发#
发布于:2002-08-02 15:11
你的“TDI防火墙的例子”可以给我参考一下吗?我现在碰到了一个问题很是头疼。。。。。。
wlrwx@yahoo.com.cn |
|
|