戴靚婕 王 希
[摘要]提出一種應用Windows API函數構建計算機網絡監控教學系統的技術方案。
[關鍵詞]計算機網絡教學系統 程序終止 窗口攔截 鉤子函數 API函數 IP收集 Socket通訊
中圖分類號:O29文獻標識碼:A文章編號:1671-7597(2009)0910115-02
一、網絡教學系統的現狀
近年來,通過計算機的網絡功能,使分布于不同地方的老師和學生同時置于一個“虛擬教室”中進行教學活動,老師和學生在計算機旁就可同時完成語音教室,電腦教室,模擬實驗室等多種功能。它不僅能提供教師和學生以文字、圖形、圖象、動畫等數據信息的交互,而且能通過多媒體通信網的支持,提供語音、視頻信號的交互。通過計算機局域網和1ntemet,教師和學生不但可以共享本地的多媒體教學資源,甚至可以實現遠程教學和全球教學資源共享。
二、問題的提出
通過對多媒體網絡教學系統的比較,我們發現各有利弊。功能都很強大,使用也很方便,都具備網絡監控的功能,但是教師無法設定學生要限制運行的程序,管理起來比較費時費力,難以自動管理,本文就如何應用API函數在網絡中實現自動控制方案進行一些簡單地嘗試。
三、多媒體網絡教學系統的架構
物理實體層:體現為實現多媒體網絡的各種物理實體。就一個教室而言,包括服務器、教師用機、學生用機、網絡設備;就編輯中心而言,包括視頻采集卡、錄像機、數碼相機、掃描儀、多媒體編輯和圖形、動畫工作站等。
網絡層:相當于OSI的數據鏈路層、網絡層和傳輸層。它們為高層應用提供可靠的網絡保證。
多媒體網絡層:由于一般網絡層較難支持對多媒體的實時傳輸,因此我們在此基礎上再附一層,這是一個面向實時傳輸和QOS的層次,使上層能透明調用。
編輯制作層:網絡教學內容編輯器是一個基于網絡的在線收集、分類、編輯軟件系統,可以對課件的總體框架進行構思,同時應有提綱描述語言到課件語言的自動轉換工具。課件應有自己的文件描述語言,同時課件編輯器應是一個可視化的編輯環境,除了表現手段外,課件編輯系統還應能很方便地表示控制流,并能實現面向對象的課件編輯。
教學環境層:處于最頂層的教學環境是基于Client/Server(Browser
/Server)的分布式系統,它能完成以下功能:異步(當然也能同步)地為每個學生提供相同或不同的課件學習服務;保持對學生學習過程的記錄;感知學生當前的學習狀態和遇到的困難,并能對常見問題進行分析、引導、提示。
四、構建系統平臺的技術方案
(一)IP收集方案
調用Windows自帶的ICMP.dll動態鏈接庫來測試網絡的連通性,從而實現網絡掃描(即查找某個網絡上正在運行的所有主機的IP地址,甚至主機名,這里僅討論不含防火墻的主機,如果含有防火墻,則反饋防火墻的IP地址,無法取得網絡中真實主機的IP地址)。與Icmp.dll相關聯的三個API函數分別為:1.IcmpCreateFile打開一個ICMP句柄,以便發送ICMP回波請求;2.IcmpCloseHandle函數關閉有IcmpOpenFile函數打開的一個Icmp句柄;3.IcmpSendEcho函數發出一個Icmp回波請求,并等待接受一個或多個回波應答。
另外利用GetHostByAddr函數可以解析主機名,反過來也可以使用GetHostByName函數根據主機名字解析出IP地址,關于如何取得網絡中的主機名,可以用低層網絡接口NetBios實現,具體應用方法請查閱相關資料,這里不再贅述。
還有可以調用Net命令中的NetView顯示主機列表,然后用Ping命令測試IP地址。
(二)攔截技術方案
方案一:直接修改代碼法
利用GetProcAddress獲取內存中的地址,并保存該命令(進程)的頭幾個字節的指令,用一個JMP或INT匯編指令改寫頭幾個字節,這樣就是線程調用到某一個我們設定的進程中,從而實現了非法進程的分所攔截功能。
方案二:移動代碼法
利用AllocCStoDSAlias移動代碼段專門工具對Exe程序代碼段進行處理,或者應用修改中斷向量表IDT法和安裝調用門LDT法修改代碼。
方案三:Windows鉤子函數法
應用Windows的鉤子函數也可以實現所有進程關聯,函數SetWindows
HookEx具體用法請查閱相關資料,這里不再贅述。
方案四:Windows API函數枚舉法
應用Windows API 函數EnumWindows 遍歷查找窗口,用GetWindowText
取所有窗口的標題,根據取得的窗口標題列表來判斷其中是否存在要限制的程序的標題,如果有,則通過SendMessageA發送終止命令消息,從而實現了程序進程的攔截與終止技術。
方案五:互斥向量法
利用API函數OpenMutex函數檢查指定名字的互斥向量存在,應用ReleaseMutex函數釋放互斥量的所有權。相關函數的原型為:
HANDLE OpenMutex(DWORD dwDescriedAccess,Bool binheritHanle,
LPCTSTR lpName);
Bool ReleaseMutex(HANDLE hMutex);
(三)關閉限制程序方案
應用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 消息,如果沒有響應,終止程序
(四)客戶端監控程序的自動運行方法
通過修改注冊表選項,實現監控程序的自動運行,具體方法如下:
HKEY_LOCAL_MACHINESoftWareMicrosoftWindowsCurrentVersionRun
每次Windows啟動時都運行,即使注銷后在登錄也運行相關程序
HKEY_LOCAL_MACHINESoftWareMicrosoftWindowsCurrentVersionRunOnce
系統啟動時只運行一次,注銷后不再啟動
HKEY_LOCAL_MACHINESoftWareMicrosoftWindowsCurrentVersionRunServiceOnce
系統啟動時運行,作為服務進程運行
(五)客戶端監控程序的隱藏自己方法
由于Windows NT和Windows2000并沒有提供RegisterServiceProcess
函數,故本方法僅在Windows 9X平臺有效。在Windows 9X下通過Register
ServiceProcess讓程序在運行時不要出現在Windows “關閉程序”窗口中,避免了用戶將客戶端監控程序強行終止掉。
(六)服務器端與客戶端的連接
應用Windows Socket API函數實現服務器與客戶端的相互通訊,Windows Socket又可以通過下層的網絡通訊協議功能和操作系統調用實現通訊操作。使用UDP協議建立無連接的服務后,向指定IP地址收發數據。初始化過程分三步實現,分別為:
創建本地連接套接口
Create(PortAddress,SOCK_DGRAM,LocalIpAddress);
原型為
Bool Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,
LPCTSTR lpszSocketAddress=NULL);
綁定本地連接套接口
Bind(PortAddress, LocalIpAddress);
定時器設定
SetTimer(Timersymbol,Interval,NULL);
利用ReceiveFrom函數接收數據,Sendto函數發送數據,OnTimer函數監視。
利用API函數CreateToolHelp32Snapshot,Process32First, Process
32Next等顯示系統中所有正在運行的進程,并顯示其相關信息。
五、結論
應用API函數構建的計算機網絡監控教學系統不僅克服了已往硬件多媒體教學系統的價格性能比高,浪費系統資源,難以維護的缺陷,同時也克服了軟件多媒體教學系統的無法自適應監控的缺陷,它利用計算機現有的操作系統平臺,直接捕捉系統進程,巧妙地通過進程標志,使用軟件攔截、程序中斷技術,使得教學系統平臺內的客戶機無法自主運行程序,保障了教學秩序正常進行。
教學計算機輔助教學對教學的重要意義已經得到越來越多的人的承認,隨著計算機技術的進一步發展,多媒體和網絡技術進入教室已成為一種必然趨勢。國家教育部及有關部門已把多媒體教學作為面向二十一世紀教育改革的一個重要內容。
參考文獻:
[1]蔣東興等編著,Windows Sockets網絡程序設計大全,清華大學出版社,1999.4,TP393/117.
[2]柳永新等編著,Windows C程序設計入門與提高,清華大學出版社,1999.6,TP312C/89.
[3](美)CharlesPetzold著,Windows程序設計,北京大學出版社,1999.11,TP316.7/60:1.
[4]張桂勇、陳芳瓊編著,API for Windows 2000/XP詳解(配光盤),清華大學出版社,2004.4.