韓冰 孫鐵鑫 營(yíng)口職業(yè)技術(shù)學(xué)院
Flash重定向相關(guān)技術(shù)探究
韓冰 孫鐵鑫 營(yíng)口職業(yè)技術(shù)學(xué)院
隨著虛擬化技術(shù)的發(fā)展,虛擬桌面技術(shù)越來越被重視, Flash重定向技術(shù)將虛擬桌面服務(wù)端中的瀏覽器播放的Flash轉(zhuǎn)移到客戶端完成渲染,可以減少網(wǎng)絡(luò)負(fù)載,能夠增強(qiáng)播放的流暢性與清晰度,這種穩(wěn)定的軟件服務(wù)能夠很好地處理虛擬桌面系統(tǒng)在處理用戶各種輸入操作時(shí)會(huì)遇到各種錯(cuò)誤與異常情況。本文對(duì)Flash重定向的相關(guān)技術(shù)進(jìn)行了介紹,,對(duì)桌面虛擬化技術(shù)進(jìn)行簡(jiǎn)要的介紹,深入探究了Flash插件所基于的COM技術(shù)及Flash重定向所用的相關(guān)分析與實(shí)現(xiàn)技術(shù)。
桌面虛擬化 重定向 ActiveX控件 動(dòng)態(tài)鏈接庫(kù)
隨著虛擬化技術(shù)的發(fā)展,服務(wù)器虛擬化技術(shù)已成為現(xiàn)代數(shù)據(jù)中心的核心,這種技術(shù)大大增強(qiáng)了數(shù)據(jù)中心的規(guī)模,提升了數(shù)據(jù)的靈活性與安全性。要虛擬桌面系統(tǒng)中,在流行的瀏覽器中網(wǎng)絡(luò)播放高清視頻時(shí),增強(qiáng)播放的流暢性與清晰度需要良好的解決和優(yōu)化方案。Flash重定向技術(shù)便是在此基礎(chǔ)上提出的,F(xiàn)lash重定向技術(shù)將虛擬桌面服務(wù)端瀏覽器播放的Flash轉(zhuǎn)移到客戶端完成渲染,可以減少網(wǎng)絡(luò)負(fù)載,這種穩(wěn)定的軟件服務(wù)能夠很好地處理虛擬桌面系統(tǒng)在處理用戶各種輸入操作時(shí)會(huì)遇到的各種錯(cuò)誤與異常情況。
桌面虛擬化是一種分離技術(shù),它將邏輯桌面資源與物理機(jī)器進(jìn)行分離。通過采用桌面虛擬化,我們可以通過不同的物理終端訪問相同的邏輯桌面環(huán)境以及與之相對(duì)應(yīng)的軟件資源,也可以在相同的物理終端下訪問不同的邏輯桌面。將原個(gè)人計(jì)算機(jī)上的桌面環(huán)境、數(shù)據(jù)、程序與負(fù)載轉(zhuǎn)移到數(shù)據(jù)中心的服務(wù)器上。
桌面虛擬化技術(shù)具有以下特性:
(1)集中管理維護(hù):管理維護(hù)與配置軟件環(huán)境集中在服務(wù)器端進(jìn)行,可以減少工作量。
(2)使用的連續(xù)性:當(dāng)終端用戶從其他地點(diǎn)登錄時(shí),可以繼續(xù)以前的相關(guān)配置和存儲(chǔ)文件內(nèi)容。
(3)故障恢復(fù):恢復(fù)用戶桌面可以通過對(duì)虛擬機(jī)的快照、備份和遷移等手段實(shí)現(xiàn)。
(4)用戶自定義:用戶可以自定義桌面的環(huán)境。
ActiveX控件是一種特殊的COM組件,F(xiàn)lash重定向技術(shù)是基于ActiveX的重定向的原理。Flash組件能夠?qū)崿F(xiàn)ActiveX控件的基本接口,F(xiàn)lash組件是一個(gè)標(biāo)準(zhǔn)的ActiveX控件。圖一說明了基本的ActiveX控件和容器的耦合關(guān)系,容器通常包含很多個(gè)控件對(duì)象,并且每個(gè)控件對(duì)象被綁定到一個(gè)站點(diǎn)對(duì)象上。
在Flash重定向系統(tǒng)中,IE瀏覽器的每個(gè)頁(yè)面均為一個(gè)容器?;贏ctiveX的重定向技術(shù)通過解耦A(yù)ctiveX控件與容器,將ActiveX控件轉(zhuǎn)移到遠(yuǎn)程播放。
圖一 ActiveX控件與容器關(guān)系
以下幾種技術(shù)可以對(duì)Flash組件、對(duì)瀏覽器進(jìn)行逆向分析,是Flash重定向系統(tǒng)中通用的技術(shù)。
DLL動(dòng)態(tài)鏈接庫(kù)是微軟公司在Windows操作系統(tǒng)中采用的一種共享函數(shù)庫(kù),將經(jīng)常使用的代碼編譯形成DLL文件。操作系統(tǒng)運(yùn)行時(shí),將DLL文件加載到指定的內(nèi)部存儲(chǔ)器中。當(dāng)需要時(shí)DLL文件會(huì)被加載連接,這種動(dòng)態(tài)鏈接機(jī)制能夠降低內(nèi)存的使用率。
DLL動(dòng)態(tài)鏈接庫(kù)注入技術(shù)通過強(qiáng)制加載動(dòng)態(tài)鏈接庫(kù)的方式實(shí)現(xiàn)在其他程序進(jìn)程空間中運(yùn)行相應(yīng)代碼。DLL動(dòng)態(tài)鏈接庫(kù)注入常被外部程序用來作為改變一個(gè)程序的原行為。
Windows操作系統(tǒng)中采用的DLL代碼注入有兩種方式:一種是注入路徑,另一種是注入到程序中。
注入路徑方式在注冊(cè)表項(xiàng)HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindowsAppinit_DLLs中加入需要注入的DLL文件相應(yīng)的路徑。鏈接到User32.dll 的所有進(jìn)程都加載到此DLL文件中。
注入程序方式DLL文件通過進(jìn)程使用CreateRemote等Windows API函數(shù)將其注入到另一個(gè)程序中,所創(chuàng)建的線程在進(jìn)程中調(diào)用LoadLibrary函數(shù)加載注入DLL。
DLL動(dòng)態(tài)鏈接庫(kù)注入通常與鉤子技術(shù)一同使用,在Flash重定向系統(tǒng)中,還需要改變服務(wù)端IE瀏覽器的原行為,在IE瀏覽器啟動(dòng)時(shí),通過使用上述的注入路徑方式將Flash重定向控制代碼注入到IE瀏覽器的進(jìn)程中。
Windows API攔截技術(shù)是通過Windows系統(tǒng)API進(jìn)行攔截,從而改變其行為的技術(shù)。其攔截方式的基本原理是:修改被攔截函數(shù)的頭六個(gè)Byte,使其成為一個(gè)跳轉(zhuǎn)到新函數(shù)的JMP指令。再將這些攔截行為的代碼編譯成DLL文件并被加載到目標(biāo)進(jìn)程中,Windows API攔截常與DLL注入技術(shù)配合使用。在Flash重定向中,在控制代碼被注入到瀏覽器后,通過Windows API攔截技術(shù)截獲Flash實(shí)例形成構(gòu)建請(qǐng)求,再進(jìn)入替換實(shí)例的流程。
COM接口鉤子技術(shù)是通過COM接口截獲接口方法調(diào)用的技術(shù)。它主要有兩種實(shí)現(xiàn)方式:一種是修改接口Virtual Table方式,另一種是基于代理類的方式。
COM接口內(nèi)存模型如圖二所示,通過COM接口指針訪問COM對(duì)象方法,在訪問時(shí),先查詢Virtual Table存儲(chǔ)函數(shù)的地址,再利用Virtual Table中的地址進(jìn)行調(diào)用。一個(gè)COM類的不同對(duì)象的pVtable指向同一個(gè)Virtual Table,通過改變替換Virtual Table中的函數(shù)地址對(duì)某個(gè)接口方法進(jìn)行攔截。此方法主要應(yīng)用于分析瀏覽器對(duì)Flash實(shí)例的調(diào)用以及Flash實(shí)例自身的行為。當(dāng)Flash內(nèi)部采用調(diào)用接口方法時(shí),修改接口Virtual Table方式設(shè)置的攔截函數(shù)同時(shí)被觸發(fā)。
圖二 COM接口內(nèi)存模型
圖三所示的方式是基于代理類的攔截COM接口的方法。代理類B實(shí)現(xiàn)了需要的COM類A中的所有接口,代理類B中的接口方法可以代理到A中的接口方法,還可以進(jìn)行其他處理。在使用CLSID創(chuàng)建A類對(duì)象a時(shí),可以實(shí)現(xiàn)創(chuàng)建B類對(duì)象b,同時(shí)返回b的地址,接著通過調(diào)用B類的接口方法實(shí)現(xiàn)對(duì)A類接口方法的調(diào)用。這種基于代理類的方式是Flash重定向系統(tǒng)替代組件實(shí)現(xiàn)重定向的一種方法。
圖三 COM接口原理
如果Windows操作系統(tǒng)中的線程注冊(cè)了窗口類,那么就會(huì)有消息隊(duì)列接收輸入和系統(tǒng)消息。Windows操作系統(tǒng)通過消息鉤子來監(jiān)視系統(tǒng)消息流,并且在目標(biāo)窗口之前處理特定類型消息的機(jī)制。Windows消息鉤子有局部消息鉤子和全局消息鉤子。局部消息鉤子用于攔截特定進(jìn)程中的消息;全局消息鉤子用于攔截來自所有進(jìn)程的消息。窗口消息鉤子的設(shè)置通過兩個(gè)函數(shù)來實(shí)現(xiàn),消息鉤子的回調(diào)函數(shù)用SetWindowsHookEx函數(shù)設(shè)置,卸載消息鉤子使用UnhookWindowsHookEx函數(shù)。
Flash重定向系統(tǒng)中,Windows操作系統(tǒng)的窗口消息鉤子能夠獲取服務(wù)端瀏覽器窗口的大小、位置、顯示、隱藏、銷毀等息。Windows操作系統(tǒng)客戶端容器中對(duì)鍵盤鼠標(biāo)操作進(jìn)行重定向時(shí),需要Windows窗口消息鉤子對(duì)此類消息進(jìn)行攔截分析。
韓冰(1976-)女,遼寧省營(yíng)口市,副教授,研究方向:現(xiàn)代教育技術(shù);孫鐵鑫 (1962-)男,遼寧省營(yíng)口市,高級(jí)實(shí)驗(yàn)師,研究方向:機(jī)房管理。