本發(fā)明涉及信息安全,尤其涉及一種網站后門檢測方法和裝置。
背景技術:
網站后門通常是指那些繞過網站安全性控制而獲取網站服務器的控制權的網站文件,通常以asp、php、jsp或cgi等代碼編寫而成。Web腳本語言多數都支持執(zhí)行動態(tài)代碼,例如把接收到的參數當作代碼來執(zhí)行,或者把變量經過運算后當作代碼來執(zhí)行,這一點經常被黑客利用來編寫網站后門,繞過安全檢測。即,木馬執(zhí)行者將本身并不是木馬的后門文件放進網站服務器,其通常具備很強的隱蔽性,不會直接被木馬攻擊者利用來攻擊網站服務器,而是作為木馬攻擊者攻擊網站服務器的通道。也即,木馬攻擊者通常提交特定的參數給網站后門。特定的參數提交到網站后門后,成為木馬,實現對網站服務器的攻擊。因此,需要定期檢測網站后門是否存在。
現有的針對網站文件是否為網站后門的檢測方案通常采用靜態(tài)檢測。即,通過采集大量網站后門的樣本,判斷待檢測網站文件的特征是否與大量樣本之一的特征關鍵詞存在匹配,如果匹配則判斷待檢測網站文件為網站后門。靜態(tài)檢測的缺點是,現在多數腳本語言都支持運行時動態(tài)生成代碼并使用assert方式執(zhí)行,特定的參數可能經過加密和混淆后才提供給后門,這樣后門從靜態(tài)代碼上看已經完全失去了后門的特征,只有把特定的參數經過加密和混淆提供給后門后,后門才表現出后門的特征。這種檢測方式容易漏報和誤報。
技術實現要素:
本發(fā)明的目的之一是提升網站后門檢測的準確性。
根據本發(fā)明的一個方面,提供了一種網站后門檢測方法,其中所述網站后門檢測方法包括:
將待檢測網站文件放入與該待檢測網站文件的實際執(zhí)行環(huán)境隔離的獨立空間中運行;
響應于該待檢測網站文件在所述獨立空間運行的過程中發(fā)出的外部參數獲取請求,構造帶有危險標記的外部參數提供給該待檢測網站文件,其中如果在該待檢測網站文件在所述獨立空間中運行過程中,該帶有危險標記的外部參數經受預定字符串處理函數,則危險標記保持;
判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數、及所述危險函數的參數是否帶有危險標記;
如果判斷出該待檢測網站文件在所述獨立空間運行的過程中執(zhí)行危險函數、且該危險函數調用帶有危險標記的參數,則檢測出該待檢測網站文件為后門文件。
根據本發(fā)明的另一個方面,還提供了一種網站后門檢測裝置,包括:
文件放入單元,被配置為將待檢測網站文件放入與該待檢測網站文件的實際執(zhí)行環(huán)境隔離的獨立空間中運行;
外部參數構造單元,被配置為響應于該待檢測網站文件在所述獨立空間運行的過程中發(fā)出的外部參數獲取請求,構造帶有危險標記的外部參數提供給該待檢測網站文件,其中如果在該待檢測網站文件在所述獨立空間中運行過程中,該帶有危險標記的外部參數經受預定字符串處理函數,則危險標記保持;
判斷單元,被配置為判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數、及所述危險函數的參數是否帶有危險標記;
檢測單元,被配置為如果判斷出該待檢測網站文件在所述獨立空間運行的過程中執(zhí)行危險函數、且該危險函數調用帶有危險標記的參數,則檢測出該待檢測網站文件為后門文件。
與現有技術相比,本發(fā)明實施例具有以下優(yōu)點:本發(fā)明實施例將待檢測網站文件執(zhí)行過程中向其提供的外部參數都作上危險標記,并且這些危險標記經過加密和混淆等字符串處理函數,危險標記是保持的,這樣只要 判斷出待檢測網站文件運行過程中執(zhí)行了危險函數,且該危險函數調用了危險標記,就能檢測出該待檢測網站文件為后門文件。通過這種利用危險標記層層跟蹤的方式,即使外部參數經過了加密或混淆,本發(fā)明的實施例的這種方式仍然認為它可能是危險的,從而避免了現有技術特定參數經過加密和混淆就不容易被識別的缺陷。即使后門從靜態(tài)代碼上看已經完全失去了后門的特征,本發(fā)明實施例通過跟蹤整個待檢測網站文件運行過程,也能夠檢測出網站后門。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為根據本發(fā)明一個優(yōu)選實施例的網站后門檢測方法1的流程圖;
圖2為根據本發(fā)明一個實施例的構造帶有危險標記的外部參數提供給待檢測網站文件的示意圖;
圖3為根據本發(fā)明一個優(yōu)選實施例的網站后門檢測裝置2的示意性框圖;
附圖中相同或相似的附圖標記代表相同或相似的部件。
具體實施方式
下面結合附圖對本發(fā)明作進一步詳細描述。
在更加詳細地討論示例性實施例之前應當提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時實施。此外,各項操作的順序可以被重新安排。當其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應于方法、函數、規(guī)程、子例程、子程序等等。
在上下文中所稱“計算機設備”,也稱為“電腦”,是指可以通過運行預定程序或指令來執(zhí)行數值計算和/或邏輯計算等預定處理過程的智能電子設備,其可以包括處理器與存儲器,由處理器執(zhí)行在存儲器中預存的存 續(xù)指令來執(zhí)行預定處理過程,或是由ASIC、FPGA、DSP等硬件執(zhí)行預定處理過程,或是由上述二者組合來實現。計算機設備包括但不限于服務器、個人電腦、筆記本電腦、平板電腦、智能手機等。
所述計算機設備包括用戶設備與網絡設備。其中,所述用戶設備包括但不限于電腦、智能手機、PDA等;所述網絡設備包括但不限于單個網絡服務器、多個網絡服務器組成的服務器組或基于云計算(Cloud Computing)的由大量計算機或網絡服務器構成的云,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超級虛擬計算機。其中,所述計算機設備可單獨運行來實現本發(fā)明,也可接入網絡并通過與網絡中的其他計算機設備的交互操作來實現本發(fā)明。其中,所述計算機設備所處的網絡包括但不限于互聯(lián)網、廣域網、城域網、局域網、VPN網絡等。
需要說明的是,所述用戶設備、網絡設備和網絡等僅為舉例,其他現有的或今后可能出現的計算機設備或網絡如可適用于本發(fā)明,也應包含在本發(fā)明保護范圍以內,并以引用方式包含于此。
后面所討論的方法(其中一些通過流程圖示出)可以通過硬件、軟件、固件、中間件、微代碼、硬件描述語言或者其任意組合來實施。當用軟件、固件、中間件或微代碼來實施時,用以實施必要任務的程序代碼或代碼段可以被存儲在機器或計算機可讀介質(比如存儲介質)中。(一個或多個)處理器可以實施必要的任務。
這里所公開的具體結構和功能細節(jié)僅僅是代表性的,并且是用于描述本發(fā)明的示例性實施例的目的。但是本發(fā)明可以通過許多替換形式來具體實現,并且不應當被解釋成僅僅受限于這里所闡述的實施例。
應當理解的是,雖然在這里可能使用了術語“第一”、“第二”等等來描述各個單元,但是這些單元不應當受這些術語限制。使用這些術語僅僅是為了將一個單元與另一個單元進行區(qū)分。舉例來說,在不背離示例性實施例的范圍的情況下,第一單元可以被稱為第二單元,并且類似地第二單元可以被稱為第一單元。這里所使用的術語“和/或”包括其中一個或更多所列出的相關聯(lián)項目的任意和所有組合。
應當理解的是,當一個單元被稱為“連接”或“耦合”到另一單元時, 其可以直接連接或耦合到所述另一單元,或者可以存在中間單元。與此相對,當一個單元被稱為“直接連接”或“直接耦合”到另一單元時,則不存在中間單元。應當按照類似的方式來解釋被用于描述單元之間的關系的其他詞語(例如“處于...之間”相比于“直接處于...之間”,“與...鄰近”相比于“與...直接鄰近”等等)。
這里所使用的術語僅僅是為了描述具體實施例而不意圖限制示例性實施例。除非上下文明確地另有所指,否則這里所使用的單數形式“一個”、“一項”還意圖包括復數。還應當理解的是,這里所使用的術語“包括”和/或“包含”規(guī)定所陳述的特征、整數、步驟、操作、單元和/或組件的存在,而不排除存在或添加一個或更多其他特征、整數、步驟、操作、單元、組件和/或其組合。
還應當提到的是,在一些替換實現方式中,所提到的功能/動作可以按照不同于附圖中標示的順序發(fā)生。舉例來說,取決于所涉及的功能/動作,相繼示出的兩幅圖實際上可以基本上同時執(zhí)行或者有時可以按照相反的順序來執(zhí)行。
根據本發(fā)明的一個方面的一個實施例,提供了一種網站后門檢測方法1。
所述網站后門檢測方法1可以在網站的服務器端執(zhí)行,也可以在第三方服務器執(zhí)行。例如,通過在網站的服務器端安裝用于檢測網站后門的應用程序,其中該應用程序可以從第三方服務器下載,也可以為網站的服務器端自帶的程序,在離線的狀態(tài)下,可以基于該應用程序在網站的服務器端的運行來檢測該網站是否存在后門;或者,在在線的狀態(tài)下,基于第三方服務器(其中第三方服務器例如為單個服務器端,或者為多個服務器端構成的云服務器)對安裝在網站的服務器端的該應用程序的運行進行控制,以檢測該網站是否存在后門。
其中所述網站后門通常是指那些繞過網站安全性控制而獲取網站服務器的控制權的網站文件,通常以asp、php、jsp或cgi等代碼編寫而成。典型地,例如,以php代碼編寫的網站后門如下:
<?php
$a=base64_decode($_POST[‘cmd’]);
assert($a);
其中,$a代表變量,$_POST[‘cmd’]代表從外部接收的參數,base64_decode代表base64解碼函數,assert代表函數名稱。所述assert函數通常被認為是危險函數。所謂危險函數可以指這樣一種情況:當該函數基于外部參數來運行時有可能被認為是網站后門的運行。一般地,危險函數集中體現為一些函數,可以事先列舉出來放在一個預定集合中。
雖然上述函數assert被認為是危險函數,但仍需分析assert函數調用的參數a是否為外部參數才能判斷其是否為后門文件。然而,現有的技術,如靜態(tài)檢測,因直接對網站文件的代碼與后門特征庫中的代碼進行比對而缺少對網站文件中的函數所調用的參數來源(例如為外部參數還是本地文件的參數)的動態(tài)分析,而assert所調用的參數$a只有經過對base64_decode($_POST[‘cmd’])解碼后,才能真正還原出來,因而現有的靜態(tài)檢測由于不會進行解碼運算而不能將assert函數所調用的參數還原,也就無法知道assert函數調用的參數最初是來自外部還是來自內部,也就無法分析出assert函數調用的參數a是否為外部參數,所以靜態(tài)檢測技術無法檢測出上述網站后門為后門文件。
當然,上述的網站后門僅為了示例,本發(fā)明實施例的網站后門檢測方法如可適用于其他網站后門的檢測,以引用的方式包含于此。
請參考圖1,圖1為根據本發(fā)明一個實施例的網站后門檢測方法1的流程圖。
如圖1所示,所述網站后門檢測方法1包括:
S101,將待檢測網站文件放入與該待檢測網站文件的實際執(zhí)行環(huán)境隔離的獨立空間中運行。
待檢測網站文件是網站上一個獨立的待檢測文件片段。例如,在網站服務器上有執(zhí)行程序的集合,其中每個執(zhí)行程序可作為一個待檢測網站文件。
實際執(zhí)行環(huán)境是指待檢測網站文件實際執(zhí)行時的硬件和軟件環(huán)境。硬 件環(huán)境例如該待檢測網站文件執(zhí)行時占用的硬件空間,軟件環(huán)境例如該待檢測網站文件執(zhí)行時調用的函數、需要的參數等。如果待檢測網站文件在實際的硬件和軟件環(huán)境中執(zhí)行,如果此時待檢測網站文件是一個后門文件,再提供給它一個外部危險參數,最后可能會形成一個木馬,造成實際危害。因此,本發(fā)明實施例中,將待檢測網站文件放入與該待檢測網站文件的實際執(zhí)行環(huán)境隔離的獨立空間中運行,這個獨立空間不影響待檢測網站文件實際的執(zhí)行。即使在獨立空間中運行時產生問題,也不會對待檢測網站文件的實際執(zhí)行造成影響。獨立空間是指物理位置上獨立、與外界的函數調用和參數交換也獨立的空間。
在一種實現方式中,所述獨立空間包括沙箱和/或虛擬機。
需要說明的是,雖然本發(fā)明實施例是將待檢測網站文件放入到獨立空間中運行,但是所述運行的過程同于所述待檢測網站文件在實際執(zhí)行環(huán)境中執(zhí)行的過程,只是兩者的運行環(huán)境不同而已。運行的過程都是:由于待檢測網站文件包含一系列按序執(zhí)行的函數,在函數中會調用一些參數,該待檢測網站文件按序調用函數,并根據函數的需要進行函數需要的參數的請求。
S102,響應于該待檢測網站文件在所述獨立空間運行的過程中發(fā)出的外部參數獲取請求,構造帶有危險標記的外部參數提供給該待檢測網站文件,其中如果在該待檢測網站文件在所述獨立空間中運行過程中,該帶有危險標記的外部參數經受預定字符串處理函數,則危險標記保持。
待檢測網站文件在所述獨立空間運行的過程中有時會發(fā)出內部參數獲取請求,有時會發(fā)出外部參數獲取請求。外部參數就是在待檢測網站文件運行的過程中從外部提供的參數。在前例中的$a=base64_decode($_POST[‘cmd’])語句中的“$_POST[‘cmd’]”就是一個在待檢測網站文件運行的過程中用戶輸入的參數,因此是外部參數。內部參數是在待檢測網站文件運行的過程中需要的、由內部機制提供的參數,例如assert($Count),其中Count是一個由內部計數器存儲的計數,其不需要外部提供。
如果待檢測網站文件在所述獨立空間運行的過程中需要外部參數,則發(fā)出外部參數獲取請求。一旦判斷出發(fā)出了外部參數獲取請求,則響應于該請求,構造帶有危險標記的外部參數提供給該待檢測網站文件。
其中所述危險標記可以為任何符號的標記,例如在參數上加上標“*”或其他符號等等。
例如,當待檢測網站文件執(zhí)行到語句base64_decode($_POST[‘cmd’])時,需要外部參數$_POST[‘cmd’],此時發(fā)出外部參數獲取請求。響應于監(jiān)視到該請求,構造一個帶有“*”的參數提供給待檢測網站文件。
將帶有危險標記的外部參數提供給該待檢測網站文件后,如果在該待檢測網站文件在所述獨立空間中運行過程中,該帶有危險標記的外部參數經受預定字符串處理函數,則危險標記保持。
這些預定字符串處理函數一般對應于加密、混淆、壓縮等函數。本發(fā)明實施例將待檢測網站文件執(zhí)行過程中向其提供的外部參數都作上危險標記,并且這些危險標記經過加密和混淆等字符串處理函數后,危險標記是保持的,這樣只要判斷出待檢測網站文件運行過程中執(zhí)行了危險函數,且該危險函數使用了帶危險標記的參數,就能檢測出該待檢測網站文件為后門文件。通過這種利用危險標記層層跟蹤的方式,即使外部參數經過了加密或混淆,本發(fā)明的實施例的這種方式仍然認為它可能是危險的,從而避免了現有技術特定參數經過加密和混淆就不容易被識別的缺陷。
例如,base64_decode()是一個解碼函數,帶有“*”的參數經過base64_decode()后,其結果仍帶有“*”。
所述預定字符串處理函數來自預先配置的字符串處理函數庫,其中所述字符串處理函數庫中的預定字符串處理函數被預先配置成在調用的參數帶有危險標記的情況下,使預定字符串處理函數的結果參數保留該危險標記。
例如,預先配置該字符串處理函數庫包括通用的一些編碼函數、通用的一些壓縮函數等,例如包含gzuncompress()。這樣,當待檢測網站文件執(zhí)行到壓縮函數gzuncompress(),它執(zhí)行的是該字符串處理函數庫中配置 的、能在調用的參數帶有危險標記的情況下,其結果參數保留該危險標記的壓縮函數,而不是一般的通常不保留該危險標記的壓縮函數。
另外,可選地,還可以通過設置外部參數表簡化步驟S102的處理。
請參考圖2,圖2示出了根據本發(fā)明一個實施例的構造帶有危險標記的外部參數提供給待檢測網站文件的步驟的詳細流程圖。如圖2所示,步驟S102包括:
S201,截獲該待檢測網站文件在所述獨立空間運行的過程中發(fā)出的外部參數獲取請求。
S202,從外部參數表中查找滿足該外部參數獲取請求的外部參數。
其中,所述外部參數表例如為哈希表或者為其他存儲方式的空間。以PHP代碼編寫的待檢測網站文件為例,函數GET和函數POST的參數都存放在哈希表中。它存儲的是以前為了滿足待檢測網站文件在獨立空間運行的過程中發(fā)出的外部參數獲取請求在后面的步驟S204中提供給待檢測網站文件的構造的帶有危險標記的外部參數。在某些情況下,如初始化的情況,所述外部參數表可以為空,以便于后續(xù)操作所涉及的外部參數的存儲。
例如,該外部參數獲取請求需要獲取外部參數a,剛好在外部參數表中存在外部參數a,則不執(zhí)行步驟S203-204,直接將外部參數a返回給待檢測網站文件。
S203,在從外部參數表中查找不到滿足該外部參數獲取請求的外部參數的情況下,才構造帶有危險標記的外部參數提供給該待檢測網站文件。
例如,以初始化的外部參數表為例,這種情況下的外部參數表為空表,則在所述待檢測網站文件發(fā)出外部參數獲取請求的情況下,從外部參數表中查找不到所需的外部參數,則構造帶有危險標記的外部參數提供給該待檢測網站。
又如,當外部參數表中只存儲有外部參數a,如果所述待檢測網站文件發(fā)出獲取外部參數b的請求,則在這種情況下,同樣在外部參數表中查找不到所需的外部參數,則構造帶有危險標記的外部參數提供給該待檢測網站。
S204,將構造的帶有危險標記的外部參數存儲在外部參數表中。
例如,以PHP代碼編寫的待檢測網站文件為例,將構造的帶有危險標記的外部參數存儲在哈希表中。
由上,基于對所需的外部參數是否可以從外部參數表中查找的判斷,可以在已經歷史上已經構想過同樣的外部參數的情況下,利用歷史上構造的結果,減少構造的工作量。
S103,判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數、及所述危險函數的參數是否帶有危險標記。
以前述php代碼編寫的一段經過base64解碼函數的網站后門為例,判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數例如是指,發(fā)現了其中的assert()是一個危險函數;判斷所述危險函數的參數是否帶有危險標記,例如是指,發(fā)現了assert()中的結果$a帶有“*”。
可選地,所述判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數是通過將該待檢測網站文件在所述獨立空間運行的過程中執(zhí)行的函數與預定危險函數庫中的危險函數進行匹配實現的。
也即,所述危險函數是預定義的,它是通過總結大量后門文件,發(fā)現其中的哪些函數被輸入特定的外部參數后變成木馬而歸納出來、放在預定危險函數庫中的。所述預定危險函數庫中存儲有大量的危險函數。當所述待檢測網站文件在獨立空間運行的過程中執(zhí)行的函數與預定危險函數庫中的危險函數相匹配時,則可以判斷所述待檢測網站文件在所述獨立空間運行的過程中執(zhí)行危險函數。例如,預定危險函數庫中存儲有assert函數,則所述待檢測網站文件在所述獨立空間運行的過程中執(zhí)行assert函數,則判斷所述待檢測網站文件在所述獨立空間運行的過程中執(zhí)行危險函數。
S104,如果判斷出該待檢測網站文件在所述獨立空間運行的過程中執(zhí)行危險函數、且該危險函數調用帶有危險標記的參數,則檢測出該待檢測網站文件為后門文件。
具體而言,例如,以前述php代碼編寫的、具有Base64解碼函數的程序為例,發(fā)現其中的assert()是一個危險函數,并發(fā)現assert()中的結果$a帶有“*”,可以認為前述php代碼編寫的、具有Base64解碼函數的程序是后門文件。
可選地,所述網站后門檢測方法還包括:
如果判斷出該待檢測網站文件在所述獨立空間運行的過程中不執(zhí)行危險函數、或雖然執(zhí)行危險函數但該危險函數不調用帶有危險標記的參數,則檢測出該待檢測網站文件為安全文件。
具體而言,例如,以前述php代碼編寫的、具有Base64解碼函數的程序為例,發(fā)現其中沒有調用危險函數,或發(fā)現雖然調用了危險函數assert()、但assert()中的結果$a不帶有“*”,可以認為前述php代碼編寫的、具有Base64解碼函數的程序不是后門文件。
根據本發(fā)明的另一個實施例,還提供了一種網站后門檢測裝置2,包括:
-文件放入單元301,被配置為將待檢測網站文件放入與該待檢測網站文件的實際執(zhí)行環(huán)境隔離的獨立空間中運行。其中所述獨立空間可以包括沙箱和/或虛擬機。
-外部參數構造單元302,被配置為響應于該待檢測網站文件在所述獨立空間運行的過程中發(fā)出的外部參數獲取請求,構造帶有危險標記的外部參數提供給該待檢測網站文件,其中如果在該待檢測網站文件在所述獨立空間中運行過程中,該帶有危險標記的外部參數經受預定字符串處理函數,則危險標記保持;
-判斷單元303,被配置為判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數、及所述危險函數的參數是否帶有危險標記;
-檢測單元304,被配置為如果判斷出該待檢測網站文件在所述獨立空間運行的過程中執(zhí)行危險函數、且該危險函數調用帶有危險標記的參數,則檢測出該待檢測網站文件為后門文件。
可選地,所述預定字符串處理函數來自預先配置的字符串處理函數庫, 其中所述字符串處理函數庫中的預定字符串處理函數被預先配置成在調用的參數帶有危險標記的情況下,使預定字符串處理函數的結果參數保留該危險標記。
可選地,所述外部參數構造單元302被配置為:
-截獲該待檢測網站文件在所述獨立空間運行的過程中發(fā)出的外部參數獲取請求;
-從外部參數表中查找滿足該外部參數獲取請求的外部參數;
-在從外部參數表中查找不到滿足該外部參數獲取請求的外部參數的情況下,才構造帶有危險標記的外部參數提供給該待檢測網站文件;
-將構造的帶有危險標記的外部參數存儲在外部參數表中。
可選地,所述判斷單元303被配置為:
判斷該待檢測網站文件在所述獨立空間運行的過程中是否執(zhí)行危險函數是通過將該待檢測網站文件在所述獨立空間運行的過程中執(zhí)行的函數與預定危險函數庫中的危險函數進行匹配實現的。
可選地,所述檢測單元304還被配置為:
如果判斷出該待檢測網站文件在所述獨立空間運行的過程中不執(zhí)行危險函數、或雖然執(zhí)行危險函數但該危險函數不調用帶有危險標記的參數,則檢測出該待檢測網站文件為安全文件。
應當理解,圖3所述的結構框圖僅僅是為了示例的目的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據具體情況增加或減少某些設備。。
所屬技術領域的技術人員知道,本發(fā)明可以實現為系統(tǒng)、方法或計算機程序產品。因此,本公開可以具體實現為以下形式,即:可以是完全的硬件,也可以是完全的軟件,還可以是硬件和軟件結合的形式。
附圖中的流程圖和框圖顯示了根據本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際 上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現,或者可以用專用硬件與計算機指令的組合來實現。
對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化囊括在本發(fā)明內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。