2.2接收分组数据包的原则 PtReceive和PtReceivePacket函数接收NDIS数据包的方式不同。虽然不同接收函数接收 数据包内容的方法不相同,但是整个分析工作的工作原理却相同。系统采用修改的社如^“6 函数捕获数据包。RtReceive函数原型显示如下: PtReceive ( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookAheadBuffer, IN UNIT LookAheadBufferSize, IN UINT PacketSize);
参数LookaheadBufferSize指定lookaheadbuffer的字节大小。如果网络数据包大小小于 或等于参数值,则表明参数lookaheadbuffer[包含整个网络的所有信息。以下即为获取网络 数据包的底层驱动程序的程序代码:
ndis模型支持混合网络传输ndis驱动程序,称之为仰13中间层驱动程序。该驱动程序介于传输驱动程序和仰13驱动程序之间。对于仰13驱动程序而言,仰13中间层驱动程序则像是 传输驱动程序;对传输驱动程序而言,仰13中间层驱动程序则像是NDIS驱动程序。在本节中, 作者阐述了使用NDIS中间层驱动程序拦截和阻止架构。图4显示了拦截和阻塞的流程图。NDIS 中间层驱动程序拦截系统中输入和输出的所有网络通信。并将截获到的网络数据包传送到扫 描和检测模块,同时将其与一系列预先定义的恶意代码或恶意软件签名进行比较。如果网络 通信数据与签名数据相匹配,则阻塞该网络通信,而其它的网络通信则继续正常传输。 |