基于Windows核心技术的网络监控教学系统的研究(转)

本文针对现有计算机网络教学系统的问题,提出一种基于Windows核心技术构建的网络监控教学系统方案。该方案克服了传统监控技术的不足,如网络带宽过大、实时性差等,实现了自动化的监控与管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 原引用地址http://club.elanw.com/dispbbs.asp?boardID=376&ID=25496 .如有转载,版权由其原作者所有.原文如下:

         基于Windows核心技术的网络监控教学系统的研究

摘要  本文分析了现行的计算机网络教学系统的功能与特点,并针对目前相关的此类软件中在监控功能上普遍存在的网络带宽过大、实时性差、占用系统资源过多、稳定性差及非自动监控等问题,给出了一种基于Windows核心技术构建计算机网络监控教学系统的技术方案。
关键词  屏幕图像,实时传输,IP收集,Windows Hook,窗口拦截


1 引言

    计算机网络在大中小学教学中的使用非常普遍。但是,我们发现一个问题,在教学的过程中,由于老师是面对着学生,而背对着学生计算机的显示器,不能随时查看或控制学生计算机上所运行的程序,所以,有的学生在教学中偷玩游戏或上网,影响了教学的质量和效果,因此,在学生机房装一款网络监控软件,监控学生计算机,十分必要。
    在我国,利用网络进行教学还只是刚刚起步。我国通向二十一世纪的信息高速公路示范工程"中国教育和科研计算机网(CERNET)"已初步形成包括全国主干网、地方网和校园网三个层次结构的网络,为网络教学提供了良好的基础设施。同时,一些教学局域网络的研究也正在进行之中,目前在国内较有影响的多媒体网络教学系统有:台湾艾康公司的Hiclass,南京远志资讯公司的Lan Star,灯塔科技公司的Win School,武汉开达公司的新教室等。这些系统都局限在计算机房、教室或一栋教学楼内,能完成基本的教学功能。

2 问题的提出

    通过以上几种多媒体网络教学系统的比较,我们发现各有利弊。虽然这些软件具有很强的实时监控等很多好用的功能,但其价格过高,这对很多学校来说是不太可行的。除此之外在以下情况下监控效果不太理想:
    (1) 那种软件因采用远程全屏幕抓取技术,实现这种技术时受控机(被监控者)要求将整个屏幕的每一个像素一个一个地获取并生成一个容量相当大的数组,然后将数组内容发送给控制机(监控者),控制机收到数据以后,将此内容还原成图像并显示本机屏幕而得到监控效果,这样整个过程使网络传输负载过大会影响监控的实时性;
    (2) 如果两台计算机屏幕显示模式不同的话,屏幕抓取发送数据以及还原图像时,会产生一定的难度和失真,这样就使得监控效果不太理想;
    (3) 当被监控者以合法程序(学生可以运行的程序)来临时覆盖当前非法界面而绕过远程屏幕监控,因此在监控与反监控方面存在着一定的漏洞;
    (4) 这类软件最致命的缺点是所有监控操作都在以人为主的教师的人工操纵下才能实现,这样教师的相当一部分时间花在了监控和操纵上,真正的意义上没有把教师解脱出来这种人工操作的烦恼中,教师无法设定学生要限制运行的程序,管理起来比较费时费力,难以自动管理,这种现象在某种程度上降低监控效率;
因传统的监控技术存在着以上几个尴尬之处,本文对Windows应用程序运行机制进行深刻地分析后就如何应用Windows核心技术在网络中实现自动控制方案进行一些简单地探讨。

3  构建系统平台的技术方案

3.1  IP收集方案
    利用GetHostByAddr函数可以解析主机名,反过来也可以使用GetHostByName函数根据主机名字解析出IP地址,关于如何取得网络中的主机名,可以用低层网络接口NetBios实现,具体应用方法请查阅相关资料,这里不再赘述。
    还有可以调用Net命令中的NetView显示主机列表,然后用Ping命令测试IP地址。
3.2  拦截技术方案
    (1) 直接修改代码法。。
    利用GetProcAddress获取内存中的地址,并保存该命令(进程)的头几个字节的指令,用一个JMP或INT汇编指令改写头几个字节,这样就是线程调用到某一个我们设定的进程中,从而实现了非法进程的拦截功能。
    (2) 移动代码法。
    利用AllocCStoDSAlias移动代码段专门工具对Exe程序代码段进行处理,或者应用修改中断向量表IDT法和安装调用门LDT法修改代码。
    (3) Windows 钩子函数法。
    钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入到系统。钩子的种类有很多,每一种钩子负责截获并处理相应的消息。钩子机制允许应用程序截获并处理发往指定窗口的消息或特定事件,其监视的窗口即可以是本进程内的也可以是由其他进程所创建的。在特定的消息发出,并在到达目的窗口之前,钩子程序先行截获此消息并得到对其的控制权。此时在钩子函数中就可以对截获的消息进行各种修改处理,甚至强行终止该消息的继续传递。
    因此我们可以充分利用Windows的钩子函数也可以实现所有进程关联,并且可以控制有些进程或线程的运行机制。函数SetWindowsHookEx是实现Windows钩子的函数,其具体用法请查阅相关资料,这里不再赘述。
    (4) Windows API函数枚举法。
    应用Windows API 函数EnumWindows 遍历查找窗口,用GetWindowText取所有窗口的标题,根据取得的窗口标题列表来判断其中是否存在要限制的程序的标题,如果有,则通过SendMessageA发送终止命令消息,从而实现了程序进程的拦截与终止技术。
    (5) 互斥向量法。
    利用API函数OpenMutex函数检查指定名字的互斥向量存在,应用ReleaseMutex函数释放互斥量的所有权。相关函数的原型为:
HANDLE OpenMutex(DWORD dwDescriedAccess,Bool binheritHanle,LPCTSTR lpName);
Bool ReleaseMutex(HANDLE hMutex);
    (6) 窗口子类化。
    所谓窗口子类化,实际上就是改变窗口内存块中的有关参数。由于这种修改涉及到一个窗口的窗口内存块,因此可以控制一个窗口的创建行为。
    每个应用程序为了登记一个窗口类,首先要填写好一个WNDCLASS,其中的结构参数lpfnWndProc就是该类窗口函数的地址,接着调RegisterClass()函数向Windows系统申请登记这个窗口类。这时Windows会为其分配一块内存来存放该类的全部信息,这个内存块称为窗口类内存块。当应用程序要创建一个属于某一已登记窗口类的窗口时,Windows便为这个窗口分配一块内存,即窗口内存块,用来存放与该窗口有关的专用信息。这些信息一部分来自传递给窗口创建函数CreateWindow()或CreateWindowEx()的参数信息,另一部分则来自所属窗口类的窗口类内存块,其中参数lpfnWndProc便被Windows从窗口类内存块复制到为新创建窗口分配的窗口内存块中。当有消息被发送到这个窗口时,Windows检查该窗口内存块中的窗口函数地址(lpfnWndProc),并调用该地址上的函数来处理这些消息。


3.3  关闭限制程序方案
    应用API函数ExitWindowsEx实现计算机管理。ExitWindowsEx原型为:
Bool ExitWindowsEx(UNIT uflags,DWORD dwReserved);
    其中uflags的参数如下:
    EXW_LOGOOFF   注销当前用户
    EXW_POWEROFF  关闭系统切断电源
EXW_REBOOT   重新启动
EXW_SHUTDOWN  关闭计算机
dwReserved的参数如下:
    EWX_FORCE   强行关闭计算机
EWX_FORCEIFHUANG 系统发送WM_QUERYENDSESSION和WM_ENDSESSION    消息,如果没有响应,终止程序

3.4  客户端监控程序的自动运行方法
    通过修改注册表选项,实现监控程序的自动运行,具体方法如下:
HKEY_LOCAL_MACHINE/SoftWare/Microsoft/Windows/CurrentVersion/Run
每次Windows启动时都运行,即使注销后在登录也运行相关程序
HKEY_LOCAL_MACHINE/SoftWare/Microsoft/Windows/CurrentVersion/RunOnce
系统启动时只运行一次,注销后不再启动
HKEY_LOCAL_MACHINE/SoftWare/Microsoft/Windows/CurrentVersion/RunServiceOnce
系统启动时运行,作为服务进程运行
3.5 客户端监控程序的隐藏自己方法
    由于Windows NT和Windows2000并没有提供RegisterServiceProcess函数,故本方法仅在Windows 9X平台有效。在Windows 9X下通过RegisterServiceProcess让程序在运行时不要出现在Windows "关闭程序"窗口中,避免了用户将客户端监控程序强行终止掉。
3.6 服务器端与客户端的连接
     应用Windows Socket API函数实现服务器与客户端的相互通讯,Windows Socket又可以通过下层的网络通讯协议功能和操作系统调用实现通讯操作。使用UDP协议建立无连接的服务后,向指定IP地址收发数据。初始化过程分三步实现,分别为:
    创建本地连接套接口:

    利用ReceiveFrom函数接收数据,Sendto函数发送数据,OnTimer函数监视。
    利用API函数CreateToolHelp32Snapshot,Process32First, Process32Next等显示系统中所有正在运行的进程,并显示其相关信息。

4 结论

    综合运用Windows核心技术构建的计算机网络监控教学系统不仅克服了已往硬件多媒体教学系统的价格性能比高,浪费系统资源,难以维护的缺陷,同时也克服了软件多媒体教学系统的无法自适应监控的缺陷,它利用计算机现有的操作系统平台,直接捕捉系统进程,巧妙地通过进程标志,使用软件拦截、程序中断技术,使得教学系统平台内的客户机无法自主运行程序,从而有效克制学生偷玩游戏和上网聊天等不良现象,这样学生会将大部分精力放在所要掌握的课程内容的操作练习上,保障了教学秩序正常进行。除此之外该软件因对当前运行的程序的数量进行制约,这样会避免软硬件资源不够用、系统运行速度缓慢、进程(线程)之间的相互排斥或死锁(死机)等不良现象并使计算机始终处于稳定的工作状态从而延长计算机各类相关设备的实用期或者减少机房维护工作人员的维护工作量。

参考文献

[1] 陈宇红等.Windows  核心技术及其综合应用.中国科学技术大学出版社, 1995年4月
[2] 钟乐海 . 多功能网络实时监控系统的实现[J]. 计算机应用. 2003年1月
[3] 戴春达,符红光.Win32中钩子的实现技术及其应用.计算机应用[J].2002,22(8).
[4] Microsoft Win32应用程序设计接口--参考手册(上下卷),[美]Microsoft公司,清华大学出版社,1993年8月。
[5] Visual C++网络高级编程/陈坚,陈伟等编著,人民邮电出版社,2001年8月第一版。
[6] Windows Sockets网络程序设计大全 , 蒋东兴等编著 , 清华大学出版社 1999.4 , TP393/117
[7] API for Windows 2000/XP详解(配光盘) , 张桂勇,陈芳琼编著 , 清华大学出版社 2004.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值