專利名稱:在移動通信框架內(nèi)用于更新掃描子系統(tǒng)的更新系統(tǒng)與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動通信設(shè)備的安全領(lǐng)域,具體地說,是關(guān)于掃描移動通信設(shè)備以偵測惡意軟件。
背景技術(shù):
在過去的十年中,移動蜂窩式電話的數(shù)目與使用增長迅速。最近一段時期,引入了無線設(shè)備,它能將移動電話與個人數(shù)字助理(PDA)的功能相結(jié)合??梢灶A(yù)計,在未來一段時間內(nèi),隨著新型蜂窩式電信標(biāo)準(zhǔn)(例如6PRS、UMTS及WAP)使得跨無線界面上的高速數(shù)據(jù)傳輸成為可能,這一領(lǐng)域?qū)⒔?jīng)歷強(qiáng)勁的增長。
可以預(yù)計,無線通信平臺將有可能遭受到所謂的惡意軟件(malware),如病毒、特洛伊木馬、計算機(jī)蠕蟲(下文中統(tǒng)稱為‘病毒’),以及其它干擾性/有害內(nèi)容的侵襲;其侵害方式與現(xiàn)今個人計算機(jī)以及工作站所受侵害方式大致相同。事實上已經(jīng)有多種移動電話病毒被確認(rèn)。
為抵御病毒的襲擊,必須在移動平臺上布置安裝防病毒軟件,其方式與桌上型計算機(jī)環(huán)境的布置方式大致相同。多種不同的桌上型防病毒應(yīng)用軟件現(xiàn)已問世。這些應(yīng)用軟件的大部分依靠一種基本的掃描引擎,它會尋找可疑檔案中是否存在預(yù)先確定的病毒簽名。這些簽名儲存在一個數(shù)據(jù)庫中,必須經(jīng)常對其進(jìn)行更新,以反映最新識別的病毒信息。
一般來說,用戶們可以每隔一段時間通過互連網(wǎng)、從接收的電子郵件、或從一張光盤和軟盤下載替換用數(shù)據(jù)庫。用戶們也需要時常更新軟件引擎,以便于在發(fā)現(xiàn)新類型的病毒時利用最新的病毒偵測技術(shù)。
移動無線平臺給軟件開發(fā)商們(包括防病毒軟件開發(fā)商)帶來了一系列的問題。這些問題中主要是有限的內(nèi)存和移動平臺的處理能力,以及它們所擁有的有限的輸入/輸出能力(例如,無光盤驅(qū)動或軟驅(qū),無高帶寬的固定線路網(wǎng)絡(luò)或互聯(lián)網(wǎng)連接)。不幸的是,這一缺點使得所有對移動通信設(shè)備進(jìn)行的更新工作變得難以開展。
發(fā)明內(nèi)容
本發(fā)明提供了一種可有效更新移動通信設(shè)備中的掃描子系統(tǒng)的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品。首先接收到的是用于更新一臺移動通信設(shè)備的掃描子系統(tǒng)的第一部分更新程序。之后,除了接收到第一部分更新之外,還可以接收到更多的更新部分。然后該更新程序就被安裝于該掃描子系統(tǒng)。
在一個實施例中,可確定更新程序是否具有完整性。相應(yīng)地,根據(jù)該更新的完整性,該更新程序可有條件地安裝于掃描子系統(tǒng)。
作為一種選擇,更新的完整性可以通過使用一個簽名來決定。此簽名可以通過更新的某一部分來接收(比如最后一部分)。之后,可以將該簽名與另一個通過利用更新的每個部分而生成的簽名進(jìn)行比對。
為適應(yīng)移動通信框架中固有的有限帶寬問題,更新程序的一部分可以最小化。此外,可以針對更新程序的某些部分進(jìn)行壓縮。
在使用中,可以決定第一部分是否為空。由此,可以基于第一部分是否決定為空而針對更新程序的其它部分進(jìn)行有條件的接收。同樣,此特征對于解決移動通信框架中固有的有限帶寬接收問題也有益處。
作為一種選擇,使用掃描子系統(tǒng)的掃描可以在接收到更新程序的時候暫停。此外,掃描可以在更新程序被安裝于掃描子系統(tǒng)中之后繼續(xù)進(jìn)行。
在另外一個實例中,可將更新程序的每一部分的格式進(jìn)行特殊設(shè)計,使其能適應(yīng)移動通信框架固有的有限帶寬的問題。例如,更新程序的每個部分可以包括一個頭文件。該頭文件可以指明一個與更新程序相關(guān)聯(lián)部分的識別碼、與更新程序相關(guān)聯(lián)部分的一段長度等。
在另外一個實例中,可由移動通信設(shè)備發(fā)出更新請求。該更新可以由帶有一請求數(shù)據(jù)結(jié)構(gòu)的移動通信設(shè)備發(fā)出請求。該數(shù)據(jù)結(jié)構(gòu)可以選擇性地包括數(shù)個變量,例如一個統(tǒng)一資源定位器(URL)變量,一個移動通信識別碼變量,一個應(yīng)用程序接口版本變量,一個偵測邏輯變量,一個簽名版本變量,和/或一個部分號碼變量。
圖1是移動通信框架一個實施例示意圖;圖2是移動通信框架另一個實施例示意圖;圖3是與一個移動通信設(shè)備相關(guān)聯(lián)的一個架構(gòu)的實施例示意圖;
圖4是一個通過使用一臺移動通信設(shè)備訪問安全或內(nèi)容分析功能的系統(tǒng)的實施例示意圖;圖5是根據(jù)圖4所示系統(tǒng)的一個應(yīng)用服務(wù)器的實施例,通過使用一臺移動通信設(shè)備訪問安全或內(nèi)容分析功能框架的示意圖;圖6是根據(jù)圖4所示系統(tǒng)的一個重復(fù)加載函數(shù)庫的實施例,通過使用一臺移動通信設(shè)備訪問安全或內(nèi)容分析功能框架的示意圖;圖7是在圖4所示系統(tǒng)下執(zhí)行的一個按需式掃描系統(tǒng)的示意圖;圖8是一個應(yīng)用程序接口(API)的各種不同組件的一個階梯狀關(guān)系的實施例示意圖,它可以用于在移動應(yīng)用程序與一個掃描子系統(tǒng)之間提供接口;圖9是一個示范型函數(shù)庫接口啟動的示意圖;圖10是一個出錯代碼功能的一個示范性格式的實施例示意圖;圖11是一個掃描子系統(tǒng)API的調(diào)用次序的實施例示意圖;圖12是一個示范性配置API的調(diào)用次序的實施例示意圖;圖13是各種不同的示范性掃描數(shù)據(jù)類型的示意圖,這些數(shù)據(jù)類型可以由應(yīng)用程序通過一個API傳遞到掃描子系統(tǒng);圖14是一個包含惡意軟件嚴(yán)重性標(biāo)識和應(yīng)用程序表現(xiàn)水準(zhǔn)的位-域變量的示范性實施例示意圖;圖15是一個圖表示意圖,該圖闡述了運(yùn)用掃描子系統(tǒng)進(jìn)行掃描的時間作為通過圖13中的變量所識別的數(shù)據(jù)類型的一個函數(shù)而變化的方式;圖16是一個示范性流程的實施例示意圖,該流程描述了該更新程序由一個用戶界面啟動的方式。
圖17是對一臺移動通信設(shè)備的一個掃描子系統(tǒng)進(jìn)行有效更新的方法的實施例示意圖。
具體實施例方式
圖1是一個移動通信框架100的實施例示意圖。如圖所示,該框架包括移動通信設(shè)備102以及能夠通過無線網(wǎng)絡(luò)進(jìn)行通信的后端服務(wù)器104。在當(dāng)前描述的環(huán)境下,移動通信設(shè)備102可包括(但并不局限于)蜂窩式電話、無線個人數(shù)字助理(PDA)、無線掌上電腦、無線手提式電腦或任何其它能夠通過無線網(wǎng)絡(luò)進(jìn)行通信的移動設(shè)備。
在一個實施例中,移動通信設(shè)備102可配備一掃描子系統(tǒng)105。該掃描子系統(tǒng)105可包括任何能夠儲存于移動通信設(shè)備102或存放于所進(jìn)行通信之中的掃描數(shù)據(jù)的子系統(tǒng)。當(dāng)然,該掃描可以是訪問式掃描、需求式掃描或者其他任何類型的掃描。此外,掃描可能牽涉到上述數(shù)據(jù)所代表的內(nèi)容(即文本、圖片等),以及對惡意軟件進(jìn)行的通用安全類型的掃描等等。
仍舊回到圖1,移動通信設(shè)備102可以進(jìn)一步配備有一個能夠描繪多個圖形用戶界面108的顯示器106,此顯示器經(jīng)過改裝以用于管理包括以上所述掃描功能在內(nèi)的各種功能。
使用時,移動通信設(shè)備102的顯示器106用于在一個網(wǎng)絡(luò)(如互聯(lián)網(wǎng)等)上顯示數(shù)據(jù)。請參見操作1。在當(dāng)前的使用過程中,用戶可以使用顯示器106瀏覽各類網(wǎng)絡(luò)上的數(shù)據(jù),具體是通過后端服務(wù)器104選擇鏈接或錨點以從網(wǎng)絡(luò)上獲取數(shù)據(jù)。請參見操作2。接著,在操作3中,掃描子系統(tǒng)105被調(diào)用以掃描所獲取的數(shù)據(jù)。
在當(dāng)前的實施例中,掃描子系統(tǒng)105顯示出已經(jīng)找到與操作4中所獲取數(shù)據(jù)有關(guān)的惡意軟件。此時,通過顯示器106向一位用戶提供了一個選項,即中斷此次獲取和/或使用/訪問該數(shù)據(jù)而忽略所識別出的惡意軟件,如操作5所示。基于操作5中的決定,用戶會或不會成為一次‘攻擊’的對象,如操作6所示。
圖2是基于另一個實施例的移動通信框架200的示意圖。該移動通信框架200類似于圖1所示的移動通信框架100,只是移動通信設(shè)備對所獲取數(shù)據(jù)中惡意軟件的識別作出反應(yīng)的方式有所不同。
具體地,操作5中僅提供給用戶一個選項。即,用戶只能關(guān)閉任何與被發(fā)現(xiàn)包含惡意軟件的數(shù)據(jù)有關(guān)的對話。
圖3顯示了基于一個實施例的與移動通信設(shè)備相關(guān)聯(lián)的架構(gòu)300。當(dāng)前的架構(gòu)300可以包含于圖1和圖2的移動通信設(shè)備。當(dāng)然,架構(gòu)300可在任何所需的場合執(zhí)行。
如圖所示,當(dāng)前的架構(gòu)300可包括多個移動應(yīng)用程序302。在當(dāng)前描述的情況下,移動應(yīng)用程序302可包括任何安裝于移動通信設(shè)備中的應(yīng)用程序或軟件等,以利于開展不同的任務(wù)。還應(yīng)該注意,該應(yīng)用程序302也可以按用戶的需要安裝于固件、硬件等之中。
在另一個實施例中,應(yīng)用程序302可包括(但是并不限于)郵件應(yīng)用程序,其任務(wù)包括管理電子郵件。此外,該應(yīng)用程序可以包括瀏覽器應(yīng)用程序,其任務(wù)包括瀏覽網(wǎng)絡(luò)。另外,該應(yīng)用程序還可以包括電話簿應(yīng)用程序,其任務(wù)包括管理多個電話號碼。作為一種選擇,該應(yīng)用程序可以包括消息應(yīng)用程序,其任務(wù)包括消息通信。應(yīng)該注意,該應(yīng)用程序可為任何類行。例如,可以為Java應(yīng)用程序或其他類似的程序。
繼續(xù)回到圖3,通過第一個應(yīng)用程序接口(API)306及第一個同掃描子系統(tǒng)304相關(guān)的函數(shù)庫308,掃描子系統(tǒng)304與應(yīng)用程序302進(jìn)行通信。更多關(guān)于第一個應(yīng)用程序接口306及第一個函數(shù)庫308的可選擇示范性信息將在下文討論圖4-12的時候作進(jìn)一步闡述。
作為一種選擇,應(yīng)用程序302可同掃描子系統(tǒng)304進(jìn)行信息通信,以方便掃描子系統(tǒng)304的掃描工作。該信息可以同將要進(jìn)行掃描的數(shù)據(jù)類型、及同此類掃描相關(guān)的時間安排有關(guān)。更多關(guān)于掃描子系統(tǒng)304同應(yīng)用程序302以此種方式進(jìn)行互動的示范性信息將在討論圖13-15的時候作進(jìn)一步闡述。
如圖3所示,第一個函數(shù)庫308可包括更新管理器310、配置管理器312、以及一個簽名數(shù)據(jù)庫314。在使用中,該更新管理器310可管理簽名數(shù)據(jù)庫314更新掃描用的最新簽名的過程。在一個實施例中,更新的過程可以進(jìn)行簡化以適應(yīng)移動通信框架固有的有限帶寬的問題。更多的關(guān)于該更新過程的示范性信息將在討論圖16-17時進(jìn)行闡述。
作為圖3中架構(gòu)300的一個組成部分又進(jìn)一步提供了操作系統(tǒng)316,該操作系統(tǒng)安裝于移動通信設(shè)備上并經(jīng)過改裝以方便執(zhí)行應(yīng)用程序302。在一個實施例中,掃描子系統(tǒng)304可以獨(dú)立于平臺,因此能夠在任何操作系統(tǒng)/移動通信設(shè)備組合中加以執(zhí)行。
為適應(yīng)這個特性,安排了第二個應(yīng)用程序接口318以及第二個函數(shù)庫320,其能夠支持多種功能,例如系統(tǒng)/函數(shù)庫初始化322、出錯函數(shù)336、內(nèi)存分配334、輸入/輸出(I/O)328、數(shù)據(jù)授權(quán)332、同步330、高級文本傳送協(xié)議326、設(shè)備信息324、調(diào)試338、以及其他功能(即共享內(nèi)存、系統(tǒng)時間,等)。在一個實施例中,第二個應(yīng)用程序接口318可以是獨(dú)立于平臺的,類似于掃描子系統(tǒng)304。更多關(guān)于第二個應(yīng)用程序接口318及第二個函數(shù)庫320的可選擇示范性細(xì)節(jié)將在討論附件A時作進(jìn)一步闡述。
圖4顯示了基于一個實施例的系統(tǒng)400,其通過使用一臺移動通信設(shè)備以訪問安全或內(nèi)容分析功能。在一個范例中,當(dāng)前的系統(tǒng)400可在圖3之架構(gòu)300中的應(yīng)用程序、掃描子系統(tǒng)以及操作系統(tǒng)環(huán)境下執(zhí)行。但是應(yīng)該注意到,當(dāng)前的系統(tǒng)400可在任何所需的環(huán)境下加以執(zhí)行。
如圖所示,這里包括了能通過無線網(wǎng)絡(luò)進(jìn)行通信的安裝于一移動通信設(shè)備的操作系統(tǒng)402。另外還提供了安裝于移動通信設(shè)備的應(yīng)用程序404,其通過使用操作系統(tǒng)402加以執(zhí)行并完成各種任務(wù)。
掃描子系統(tǒng)406通過一個應(yīng)用程序接口及一個關(guān)聯(lián)函數(shù)庫(參見圖3中的第一個應(yīng)用程序接口306及第一個函數(shù)庫308)保持與應(yīng)用程序404進(jìn)行通信。該掃描子系統(tǒng)406經(jīng)過改裝以訪問安全或內(nèi)容分析功能,以及應(yīng)用程序404所進(jìn)行的任務(wù)。在一個實施例中,安全或內(nèi)容分析為安全分析。在另外一個實施例中,安全或內(nèi)容分析為內(nèi)容分析。另外,安全或內(nèi)容分析可以包括按需式病毒掃描和/或存取式病毒掃描。
在使用中,安全或內(nèi)容分析功能可應(yīng)用于與應(yīng)用程序404所運(yùn)行任務(wù)相關(guān)聯(lián)的應(yīng)用數(shù)據(jù)。在當(dāng)前描述的環(huán)境下,應(yīng)用數(shù)據(jù)可包括任何由應(yīng)用程序404執(zhí)行的任務(wù)所輸入、處理、輸出的數(shù)據(jù)或其他與之相關(guān)的數(shù)據(jù)。
通過應(yīng)用程序接口使掃描子系統(tǒng)406與應(yīng)用程序404緊密聯(lián)合,可以降低管理費(fèi)用與代碼重復(fù)率。更多關(guān)于該應(yīng)用程序接口與相關(guān)函數(shù)庫的示范性信息將在討論此后的圖表時作進(jìn)一步闡述。
圖5基于圖4中系統(tǒng)400的應(yīng)用服務(wù)器,顯示了通過使用移動通信設(shè)備訪問安全或內(nèi)容分析功能的框架500。應(yīng)該注意到當(dāng)前的框架500可以在任何所需的環(huán)境中加以執(zhí)行。
如圖所示,掃描子系統(tǒng)可包括掃描程序502,該掃描程序通過應(yīng)用程序接口506以及一個關(guān)聯(lián)的協(xié)議(例如uItron消息聯(lián)絡(luò)系統(tǒng))與應(yīng)用程序504進(jìn)行通信。應(yīng)用程序接口506會牽涉到一個與掃描程序502相關(guān)聯(lián)的第一個組件508,以及與應(yīng)用程序504相關(guān)聯(lián)的第二個組件510,這會在下文中作進(jìn)一步闡述。
向應(yīng)用程序接口506提供的多種不同的調(diào)用512可包括開放式的調(diào)用、數(shù)據(jù)調(diào)用、以及封閉式的調(diào)用。在使用中,掃描程序502可以掃描與應(yīng)用程序504所運(yùn)行的任務(wù)相關(guān)聯(lián)的應(yīng)用數(shù)據(jù)516。
圖6所示為一個通過使用移動通信設(shè)備用以訪問安全或內(nèi)容分析功能的框架600,該框架與圖4中系統(tǒng)400的重復(fù)加載庫實例相一致。應(yīng)該注意,當(dāng)前的框架600可以在任何所需的環(huán)境下加以執(zhí)行。
如圖所示,掃描子系統(tǒng)可包括一個重復(fù)加載函數(shù)庫602。在使用中,掃描子系統(tǒng)重復(fù)加載函數(shù)庫602可在運(yùn)行時連接于應(yīng)用程序604。由此,應(yīng)用程序接口606可以被植入多個應(yīng)用程序604中的每一個之中。
類似于先前圖5中的框架500,應(yīng)用程序接口606可能涉及多種不同的調(diào)用612,包括開放式的調(diào)用、數(shù)據(jù)調(diào)用、以及封閉式的調(diào)用。在使用中,重復(fù)加載函數(shù)庫602可以用于掃描與應(yīng)用程序604所運(yùn)行的任務(wù)相關(guān)的應(yīng)用數(shù)據(jù)616。
圖7所示為一個在圖4中系統(tǒng)400環(huán)境下執(zhí)行的按需式掃描系統(tǒng)700。應(yīng)該注意,當(dāng)前系統(tǒng)700可以在任何所需的環(huán)境下加以執(zhí)行。
按需式掃描對所儲存應(yīng)用數(shù)據(jù)702進(jìn)行掃描,以偵測惡意內(nèi)容或代碼并在發(fā)現(xiàn)后將其除去。用戶可以通過一個用戶界面703來啟動按需式掃描。此外,每個應(yīng)用程序704可以調(diào)用掃描子系統(tǒng)706以運(yùn)行針對儲存于相應(yīng)內(nèi)存內(nèi)對象進(jìn)行的掃描。
另一方面,按需式掃描在應(yīng)用程序704處理或轉(zhuǎn)換應(yīng)用數(shù)據(jù)702之前提供了對惡意代碼或內(nèi)容的識別。在掃描子系統(tǒng)706偵測到惡意應(yīng)用數(shù)據(jù)702之前,按需式掃描對于用戶是透明的。
圖8基于一個實施例,顯示了應(yīng)用程序接口800的各種不同組件的層次體系,可用于在移動應(yīng)用程序與一個掃描子系統(tǒng)之間提供接口。作為一種選擇,當(dāng)前的應(yīng)用程序接口800可以在圖4中系統(tǒng)400的環(huán)境下加以執(zhí)行。但是應(yīng)該注意到,當(dāng)前的應(yīng)用程序接口800可以在任何所需的環(huán)境下加以執(zhí)行。
如圖8所示,應(yīng)用程序接口的函數(shù)包括MdoScanOpen()802、MDoScanClose()804、MDoScanVersion()806、及MDoScanData()808。MoDoScanOpen()802和MDoScanClose()804是用于創(chuàng)建/打開并關(guān)閉一個掃描子系統(tǒng)對象實例。MDoScanVersion()806提供了掃描子系統(tǒng)及簽名模式數(shù)據(jù)版本信息。MDoScanData()808運(yùn)行內(nèi)容/數(shù)據(jù)掃描及報告。同時包括在掃描應(yīng)用程序接口中的有MDoScanUpdate()810,它能提供惡意軟件簽名數(shù)據(jù)庫及偵測邏輯更新。當(dāng)MDoScanUpdate()810由一次更新應(yīng)用所調(diào)用時,函數(shù)庫就會連接上一個遠(yuǎn)程后端服務(wù)器(參見例如圖1)并下載最新的文件(例如mdo.sdb與mdo.pd)。
掃描子系統(tǒng)配置是通過運(yùn)用MDoConfigOpen()812、MDoConfigClose()814、MDoConfigGet()816以及MDoConfigSet()818所達(dá)成的。一旦一個配置句柄通過調(diào)用當(dāng)前的應(yīng)用程序接口800而獲得,進(jìn)行調(diào)用的應(yīng)用程序使用get與set配置API以查詢并設(shè)定掃描子系統(tǒng)配置的各種變量。
同時包含于當(dāng)前應(yīng)用程序接口800的是一個稱為MDoGetLastError()820的出錯獲取函數(shù)。該函數(shù)用于獲取關(guān)于已發(fā)生的最后出錯的信息。
在作出任何API調(diào)用之前,最好是在啟動時間,MDoSystemInit()825被調(diào)用以初始化函數(shù)庫環(huán)境設(shè)置。該函數(shù)庫保存了配置設(shè)置、惡意軟件代碼偵測邏輯(如mdo.pd)與簽名數(shù)據(jù)庫(如mdo.sdb)、及各種內(nèi)部變量(如同步對象,等),并將其存放于固定的持續(xù)性儲存地點。
MDoLibraryOpen()830和MDoLibraryClose()840用于初始化函數(shù)庫。一個應(yīng)用程序可以在任何其它的API調(diào)用發(fā)生之前調(diào)用MDoLibraryOpen()830,而且應(yīng)用程序可以在終止之前調(diào)用MDoLibraryClose()840。
應(yīng)用程序接口800可以通過使用不同的應(yīng)用程序接口組件從而能夠支持各種不同的功能,例如系統(tǒng)環(huán)境初始化、版本狀態(tài)信息獲取、更新掃描子系統(tǒng)、掃描、配置掃描子系統(tǒng),等。更多關(guān)于在應(yīng)用程序接口800環(huán)境下上述功能的信息將在下文進(jìn)行闡述。
系統(tǒng)初始化MDoSystemInit()825針對保存于特定永久儲存域的數(shù)據(jù)進(jìn)行驗證與環(huán)境初始化工作。一個惡意代碼/內(nèi)容簽名模式的數(shù)據(jù)庫(即mdo.sdb)、偵測邏輯(即mdo.pd)、配置設(shè)置、以及同步對象可以儲存于這些存儲域中。MDoSystemInit()825可以在API函數(shù)中的任一函數(shù)被執(zhí)行之前被調(diào)用一次(即在啟動時)。
表#1說明了關(guān)于MDoSystemlnit()825的示范性信息。
表#1MDoSystemInit描述核實并初始化系統(tǒng)環(huán)境信息原型int MDoSystemInit(void);參數(shù)無返回值如成功則0,否則為非零出錯代碼。
函數(shù)庫接口API應(yīng)用程序接口800包括多個函數(shù)庫接口組件。API接口實例化可以通過使用MDoLibraryOpen()830來達(dá)成。使用該函數(shù)而獲得的實例化函數(shù)庫接口句柄可以用于其后的API調(diào)用。在該應(yīng)用程序終結(jié)之前,MDoLibraryClose()840可以被調(diào)用以釋放該句柄。圖9說明了通過使用MDoLibraryOpen()830及MDoLibraryClose()840的一個示范性函數(shù)庫接口初始化過程900。
表#2說明了關(guān)于MDoLibraryOpen()830的示范性信息。
表#2MDoLibraryOpen描述初始化并返回一個APl函數(shù)庫界面句柄原型
MDOLIB_HANDLE MDoLibraryOpen(void)參數(shù)無返回值如成功,則返回函數(shù)庫界面句柄,否則為INVALID_MDOLIB_HANDLE。
也可參見MDoLibraryClose()表#3說明了關(guān)于MDoLibraryClose()840的示范性信息。
表#3MDoLibraryClose描述釋放由MDoLibraryClose()函數(shù)返回的與一個API函數(shù)庫句柄相關(guān)聯(lián)的系統(tǒng)資源原型void MDoLibraryClose(MDOLIB_HANDLE hLib);參數(shù)hLib[in]由MDoLibraryOpen返回的函數(shù)庫句柄返回值無也可參見MDoLibraryOpen()出錯獲取一旦函數(shù)庫已經(jīng)成功地由MDolibraryOpen()830初始化并實例化,MDoGetLastError()820向應(yīng)用程序提供關(guān)于最近一次發(fā)生出錯的信息。
表#4說明了關(guān)于MDoGetLastError()820的示范性信息。
表#4MDoGetLastError
描述返回指定的函數(shù)庫實例的最后一次出錯值原型MDoErrorCode MDoGetLastError(MDOLIB_MANDLE hLib);參數(shù)hLib[in]由MDoLibraryOpen返回的函數(shù)庫句柄返回值MDoErrorCode數(shù)據(jù)類型可以被定義為一個32位的無符號整數(shù),它既包含組件又包含出錯代碼。通常,獲取的出錯信息可能被設(shè)定在平臺抽象API層。有鑒于此,此處所給的MDoErrorCode格式類似于由抽象層API所定義的AlErrorCode格式(參見附件A)。圖10基于一個實施例說明了一個MDoErrorCode的示范性格式1000。
表#5說明了關(guān)于MDoGetLastError()820的示范性信息。
表#5MDoErrorCode被定義為typedef unsigned long MDoErrorCode;也可參見MDoLibraryOpen(),MDoScanOpenO,MDoScanData(),MDoScanUpdate()示范性計算機(jī)代碼#1通過調(diào)用一次MDoGetLastError()820說明了一個樣本函數(shù)庫的調(diào)用次序。
計算機(jī)代碼#1
出錯代碼一個由MDoGetLastError 820報告的出錯代碼包括兩個部分組件代碼與出錯代碼。請參見附件A以獲得更多信息。表#6列出了示范性出錯代碼及相應(yīng)的組件代碼。MDoGetLastError 820也返回設(shè)定于抽象函數(shù)庫層的出錯代碼。應(yīng)該注意,以下的列表僅僅出于說明的目的,不應(yīng)該將其理解為在任何方式上具有限制性。
表#6
掃描子系統(tǒng)API應(yīng)用程序接口800包括多個掃描子系統(tǒng)組件。掃描子系統(tǒng)API組件提供了數(shù)據(jù)/內(nèi)容掃描及簽名更新服務(wù)。其中包括MDoScanOpen()802、MDoScanClose()804、MDoScanVersion()806、MDoScanUpdate()810、及MDoScanData()808。MDoScanOpen()802用于掃描子系統(tǒng)對象實例化。MDoScanVersion()806提供掃描子系統(tǒng)及簽名數(shù)據(jù)庫版本信息。MDoScanUpdate()810運(yùn)行簽名數(shù)據(jù)庫更新。MDoScanData()808運(yùn)行惡意代碼/內(nèi)容數(shù)據(jù)掃描。圖11基于一個實施例說明了掃描子系統(tǒng)API調(diào)用次序1100。
MdoScanOpen表#7說明了關(guān)于MDoScanOpen()802的示范性信息。
表#7描述返回一個掃描子系統(tǒng)實例句柄原型MDOSCAN_HANDLE MDoScanOpen(MDOLIB_HANDLE hLib)參數(shù)hLib[in]通過使用MDoLibraryOpen()函數(shù)而獲得的函數(shù)庫句柄返回值如成功,則返回掃描子系統(tǒng)實例句柄。
如出錯,則為INVALID_MDOSCAN_HANDLE。
也可參見MDoScanClose(),MDoScanData(),MDoScanUpdate(),MDoLibraryOpen()MdoScanClose表#8說明了關(guān)于MDoScanClose()804的示范性信息。
表#8描述釋放掃描子系統(tǒng)實例及相關(guān)聯(lián)的系統(tǒng)資源原型void MDoScanClose(MDOSCAN_HANDLE hScan);參數(shù)hScan 通過使用MDoScanOpen()函數(shù)而獲得的掃描子系統(tǒng)句柄返回值無也可參見MDoScanOpen(),MDoScanData(),MDoScanUpdate()MdoScanVersion表#9說明了關(guān)于MdoScanVersion()806的示范性信息。
表#9描述從由MDoScanOpen()函數(shù)返回的一個掃描器句柄獲得掃描子系統(tǒng)及簽名版本信息原型int MDoScanVersion(MDOSCAN_HANDLE hScan,SVerlnfo*pVersion);參數(shù)hScan[in]通過使用MDoScanOpen()函數(shù)而獲得的掃描子系統(tǒng)句柄。
pVersion[out]指向一個包含版本信息結(jié)構(gòu)的指針返回值如成功則返回0,否則為-1。
也可參見MDoScanOpen(),MDoScanClose(),MDoScanData(),MDoScanUpdate()
示范性計算機(jī)代碼#2說明一個樣本版本信息結(jié)構(gòu)。
計算機(jī)代碼#2
由MdoScanVersion()806所報告的移動通信設(shè)備識別字符串是通過由AlDevGetInfo所返回的使用設(shè)備識別字符串而設(shè)定的(參見附件A)。
MdoScanData表#10說明了關(guān)于MDoScanData()808的示范性信息。
表#10描述MDoScanData將從一個應(yīng)用程序被調(diào)用以掃描一個特定的數(shù)據(jù)類型。調(diào)用應(yīng)用程序指定了掃描的動作、掃描目標(biāo)類型、一套用以訪問數(shù)據(jù)的I/O函數(shù)、以及一個可選性回調(diào)函數(shù)。數(shù)據(jù)掃描的結(jié)果以一個調(diào)用函數(shù)提供的數(shù)據(jù)結(jié)構(gòu)被返回。MDoScanData是重復(fù)加載的。
原型int MDoScanData(MDOSCAN_HANDLE hScan,SScanParam* pParam,SScanResult* pResult);參數(shù)hScan[in]從一次調(diào)用MDoScanOpen()函數(shù)而獲得的掃描子系統(tǒng)句柄pParam[in]指向一個包含數(shù)據(jù)掃描參數(shù)的結(jié)構(gòu)的指針pResult[out]指向一個包含數(shù)據(jù)掃描結(jié)果的結(jié)構(gòu)的指針返回值如成功則返回0,否則為-1而且出錯代碼被設(shè)定也可參考MDoScanOpen(),MDoScanClose(),MDoScanVersion(),MDoScanUpdate()MdoScanUpdate表#11說明了關(guān)于MDoScanUpdate()810的示范性信息。
表#11描述運(yùn)行惡意代碼/內(nèi)容簽名模式數(shù)據(jù)庫(mdo.sdb)及偵測邏輯(mdo.pd)更新。
原型int MDoScanUpdate(MDOSCAN_HANDLE hScan,SUpdateParam* pParam);參數(shù)hScan[in]通過使用MDoScanOpen()函數(shù)而獲得的掃描句柄pParam[in]指向一個更新參數(shù)結(jié)構(gòu)的指針,該結(jié)構(gòu)包含一個用于更新取消/放棄及進(jìn)程狀態(tài)更新的回調(diào)函數(shù)指針示范性計算機(jī)代碼#3說明了更新參數(shù)結(jié)構(gòu)被定義的方式計算機(jī)代碼#3
調(diào)用應(yīng)用程序可以在調(diào)用函數(shù)的時候設(shè)定函數(shù)指針及將要傳遞給函數(shù)的數(shù)據(jù)。請注意表#12。
表#12
配置API應(yīng)用程序接口800包括多個配置組件。包括一套用于獲取并指定掃描子系統(tǒng)設(shè)定的函數(shù)。這些函數(shù)的一個目標(biāo)是向應(yīng)用程序及掃描子系統(tǒng)提供集中型的運(yùn)行時間配置訪問。其配置數(shù)據(jù)儲存于非易失性永續(xù)型數(shù)據(jù)儲存體(如閃存,等)。
圖12基于一個實施例說明了一個示范性配置API調(diào)用次序1200。如圖所示,MDoConfigOpen()830返回一個句柄,該句柄將被傳遞到配置獲取及指定的函數(shù)。MDoConfigClose()814被用于釋放并關(guān)閉由MDoConfigOpen()812返回的配置句柄。MDoConfigSet()818用一個特定值設(shè)定了一個特定的配置變量,且MDoConfigGet()816為一個指定的變量返回一個配置值。在MDoConfigClose()814被調(diào)用前,由MDoConfSet()818所限定的配置變量設(shè)定并不一定被存放于永久儲存體。
當(dāng)存取和/或指定一個變量值的時候,應(yīng)用程序可以調(diào)用配置打開、獲取或設(shè)定,并立刻在其后添加關(guān)閉函數(shù)。
使用應(yīng)用程序接口800配置組件而指定/獲取的配置變量與值可以用以無效字符(’\0’)結(jié)尾的8位字符的字符串來代表。表#13列出了現(xiàn)有的各種配置變量。
表#13
MdoConfigOpen表#14說明了關(guān)于MDoConfigOpen()812的示范性信息。
表#14描述返回一個句柄到一個配置設(shè)定,然后將其傳遞給后面的調(diào)用MDoConfigGet()和MDoConfigSet().
原型MDOCONFIG_HANDLE MDoConfigOpen(MDOLIB_HANDLE hLib);參數(shù)hLib[in]通過使用MDoLibraryOpen()函數(shù)獲得的函數(shù)庫句柄返回值如成功則返回配置句柄。
如出錯則返回INVALID_MDOCONPIG_HANDLE。
也可參見MDoConfigClose(),MDoConfigSet(),MDoConfigGet()MdoConfigClose表#15說明了關(guān)于MDoConfigClose()814的示范性信息。
表#15描述釋放系統(tǒng)資源并關(guān)閉配置句柄原型void MDoConfigClose(MDOCONFIG_HANDLE hConfig);參數(shù)hConfig[in]由MDoConfigOpen()函數(shù)返回的配置句柄返回值無也可參見MDoConfigOpen(),MDoConfigSet(),MDoConfigGet()MdoConfigGet表#16說明了關(guān)于MDoConfigGet()816的示范性信息。
表#16描述為指定的配置變量獲得一個配置值原型int MDoConfigGet(MDOCONFIG_HANDLE hConfigchar const* pszName,char* pBuffer,unsigned int uSize);參數(shù)hConfig[in]由MDoConfigOpen()函數(shù)返回的配置句柄pszName[in]以NULL-終止的配置變量名稱pBuffer[out]配合所指定變量的以NULL-終止的配置設(shè)定/值uSize[in]以字節(jié)計算的pBuffer長度返回值成功則返回0,否則為-1。
也可參見MDoConfigOpen(),MDoConf igClose(),MDoConf igSet()MdoConfigSet表#17說明了關(guān)于MDoConfigSet()818的示范性信息。
表#17描述為指定的配置變量設(shè)定一個值原型int MDoConfigGet(MDOCONFIG_HANDLE hConfigchar const*pszName,char const*pszValue);參數(shù)hConfig[in]由MDoConf igOpen()函數(shù)所返回的配置句柄pszName[in]以NULL-終結(jié)的配置變量名稱pszValue[int]配合所指定變量的以NULL-終結(jié)的新的配置設(shè)定/值返回值如成功則返回0,否則為-1也可參見MDoConfigOpen(),MDoConfigClose(),MDoConfigGet()為便于掃描的應(yīng)用程序/掃描子系統(tǒng)通信如前所述,應(yīng)用程序可與掃描子系統(tǒng)進(jìn)行信息通信以方便掃描子系統(tǒng)進(jìn)行掃描。這一通信可通過上面所描述的API得到便利。上述的信息可與被掃描的數(shù)據(jù)類型及與此類掃描相關(guān)聯(lián)的時間安排有關(guān)。更多關(guān)于上述API達(dá)成此結(jié)果方式的描述將在下文作闡述。
掃描參數(shù)(SscanParam)調(diào)用應(yīng)用程序可以通過使用SScanParam結(jié)構(gòu)向掃描子系統(tǒng)提供一個掃描參數(shù)。包含于掃描參數(shù)的信息向掃描子系統(tǒng)提供1)掃描子系統(tǒng)的動作類型(例如iAction),2)掃描數(shù)據(jù)類型(例如需要掃描的應(yīng)用數(shù)據(jù)的類型-iDataType),3)指向掃描目標(biāo)的數(shù)據(jù)指針(例如pPrivate),4)獲取數(shù)據(jù)大小(以字節(jié)為單位)的函數(shù)(例如pfGetSize),5)重置掃描數(shù)據(jù)大小的函數(shù)(例如pfSetSize),
6)掃描子系統(tǒng)用于獲取一個掃描數(shù)據(jù)塊的函數(shù)(例如pfRead),6)用于向掃描數(shù)據(jù)寫入的函數(shù)(例如pfWrite),以及7)掃描子系統(tǒng)狀態(tài)/進(jìn)程報告的回調(diào)函數(shù)(例如pfCallBack)。
示范性計算機(jī)代碼#4說明了一個數(shù)據(jù)掃描參數(shù)的結(jié)構(gòu)。
計算機(jī)代碼#4
掃描動作(iAction)掃描動作指定了在被提供的應(yīng)用數(shù)據(jù)上要運(yùn)行的掃描的類型。表#18說明了各種不同的示范性掃描動作。
表#18
掃描數(shù)據(jù)類型(iDataType)調(diào)用應(yīng)用程序可以通過使用這一變量向掃描子系統(tǒng)通知應(yīng)用數(shù)據(jù)類型以及格式。
圖13說明了各種不同的示范性應(yīng)用數(shù)據(jù)類型1300,應(yīng)用程序能夠?qū)⑵渫ㄟ^API向掃描子系統(tǒng)進(jìn)行傳送。Ur1-字符串的格式可以符合統(tǒng)一資源定位器(RFC 1738)規(guī)格。Email-字符串的格式可以符合互聯(lián)網(wǎng)電子郵件地址格式(RFC 822)規(guī)格。缺省的域可以設(shè)置為任何所需的域。另外,電話號碼字符串可以包括數(shù)字字符’0’至’9’,以及’#’與’*’字符。
掃描數(shù)據(jù)指針/句柄(pPrivate)另外會提供一個指向一個應(yīng)用掃描對象的指針(或句柄)。掃描子系統(tǒng)并不一定使用該數(shù)據(jù)指針/句柄運(yùn)行直接的內(nèi)存I/O。數(shù)據(jù)指針/句柄被傳遞回調(diào)用函數(shù)以通過使用調(diào)用函數(shù)所指定的I/O函數(shù)進(jìn)行讀/寫。
掃描數(shù)據(jù)大小(pfGetSize)當(dāng)前的函數(shù)由掃描子系統(tǒng)用于從調(diào)用應(yīng)用程序處獲得掃描目標(biāo)數(shù)據(jù)的大小(以字節(jié)為單位)。
掃描數(shù)據(jù)調(diào)整大小(fSetSize)該函數(shù)由掃描子系統(tǒng)用于請求調(diào)用應(yīng)用程序調(diào)整被修復(fù)/清洗的應(yīng)用數(shù)據(jù)至一個給定的大小(以字節(jié)為單位)。這一函數(shù)可以與掃描并修復(fù)/刪除選項同時使用。
掃描數(shù)據(jù)讀取函數(shù)(pfRead)該即時函數(shù)可由掃描子系統(tǒng)使用,用于從調(diào)用應(yīng)用程序讀取一個指定量的應(yīng)用數(shù)據(jù)。
掃描數(shù)據(jù)寫入函數(shù)(pfWrite)這是一個可選的參數(shù),可由掃描子系統(tǒng)使用,用于向掃描對象寫入一個指定量的應(yīng)用數(shù)據(jù)以作為修復(fù)過程的一部分。如掃描動作被設(shè)定為修復(fù)或刪除,則這個函數(shù)指針可以進(jìn)行設(shè)定。
回調(diào)函數(shù)(pfCallBack)如被指定,掃描子系統(tǒng)通過以下表格內(nèi)所描述的信息調(diào)用該指定函數(shù)。如果返回的是一個負(fù)返回值,則回調(diào)函數(shù)放棄掃描過程。表#19闡述了一個示范性的回調(diào)代碼列表。
表#19
示范性的計算機(jī)代碼#5說明了一個掃描子系統(tǒng)的回調(diào)結(jié)構(gòu)。
計算機(jī)代碼#5
掃描結(jié)果(SScanResulf)對象掃描的結(jié)果,即被偵測到的惡意軟件信息,包含于由調(diào)用應(yīng)用程序所提供的SScanResult結(jié)構(gòu)被返回至調(diào)用應(yīng)用程序。該SScanResult結(jié)構(gòu)包含一個指向一個包含掃描結(jié)果信息結(jié)構(gòu)的指針,以及一個指向一個被用于移除掃描結(jié)果資源函數(shù)的指針。用于存放掃描結(jié)果的內(nèi)存由掃描子系統(tǒng)進(jìn)行分配,并由調(diào)用pfDeleteResult指針?biāo)赶虻暮瘮?shù)所釋放。
示范性計算機(jī)代碼#6說明了一個樣本調(diào)用次序。
計算機(jī)代碼#6
示范性計算機(jī)代碼#7說明了一個被偵測到的惡意代碼/內(nèi)容信息結(jié)構(gòu)。
計算機(jī)代碼#7
示范性計算機(jī)代碼#8說明了一個掃描結(jié)果結(jié)構(gòu)。
計算機(jī)代碼#8
嚴(yán)重性等級與行為級別(uBehavior)圖14基于一個示范性實施例,它表明了包括在SDetect結(jié)構(gòu)內(nèi)的含有惡意軟件嚴(yán)重度標(biāo)志及應(yīng)用程序行為級別的位-域變量1400。
表#20闡述了一個示范性惡意軟件的嚴(yán)重性級別列表。
表#20
如被掃描過的應(yīng)用數(shù)據(jù)包含對移動通信設(shè)備用戶有害的惡意軟件,則掃描子系統(tǒng)設(shè)定MD_SC_SER標(biāo)志。如果對移動通信設(shè)備本身有害,MDO_SC_TERMINAL標(biāo)志被設(shè)定。如果其對用戶和移動通信設(shè)備都有害,則MDO_SC_USER與MDO_SC_TERMINAL標(biāo)志都被設(shè)定。
應(yīng)用程序行為級別指定了對偵測到包含惡意軟件的應(yīng)用數(shù)據(jù)采取什么樣的措施。表#21列出了行為級別的各種值及應(yīng)用程序采取的相應(yīng)行動。
表#21
當(dāng)在被掃描的數(shù)據(jù)中發(fā)現(xiàn)多個惡意代碼,調(diào)用應(yīng)用程序預(yù)期將以最高級別的行為級別來做出反應(yīng)。例如,如果MDO_BC_LEVELO和MDO_BC_LEVEL3都被報告,應(yīng)用程序可以采取MDO_BC_LEVEL3的行動。
圖15說明了一個圖表1500,闡明了掃描子系統(tǒng)的掃描時機(jī)安排作為通過圖13的各變量被識別出數(shù)據(jù)類型的一個函數(shù)而變動的方式。
簽名數(shù)據(jù)庫更新如前所述,更新過程可被簡化,以適應(yīng)移動通信框架固有的有限帶寬。更多關(guān)于可達(dá)成如此效果的各種不同方式將在下文作闡述。
被更新的組件MDoScanUpdate函數(shù)隨著更新服務(wù)提供了兩個組件[例如惡意代碼偵測邏輯(mdo.pd)與簽名數(shù)據(jù)庫(mdo.sdb)]。一個組件(例如mdo.pd)可包含偵測邏輯并在一個更新的版本出現(xiàn)時被完全更新。另一個組件(例如mdo.sdb)可以逐步更新直到n個先前的版本。對第二個組件的一次完全更新可在具有比n更早版本的移動通信設(shè)備上運(yùn)行。例如,如果n被設(shè)定為5,而最新版本是20,那么會在一個比15更早版本的移動通信設(shè)備上進(jìn)行一次完整的更新。
通過用戶界面激活圖16說明了一個基于一個實施例的示范性的流程1600,它描述了由一個用戶界面啟動的更新方式。如圖所示,病毒碼的更新可以由移動通信設(shè)備用戶通過一個用戶界面1602選擇一個菜單輸入來啟動。一旦用戶選擇了該更新菜單,一個更新應(yīng)用程序1604被激活,并通過適當(dāng)?shù)母陆缑婧瘮?shù)1606連接到一臺后端服務(wù)器。
通信協(xié)議更新函數(shù)庫可以通過HTTP協(xié)議與后端服務(wù)器進(jìn)行通信。
更新過程圖17基于一個實施例,它說明了用于有效地更新一臺移動通信設(shè)備的一個掃描子系統(tǒng)的一個方法1700。在一個實施例中,當(dāng)前的方法1700可以在圖3的架構(gòu)300中的應(yīng)用程序、掃描子系統(tǒng)與操作系統(tǒng)、以及圖1和2中的系統(tǒng)中執(zhí)行。但是應(yīng)該注意,當(dāng)前的方法1700可以在任何所需的環(huán)境中加以執(zhí)行。
要初始化該過程,可以從至少一臺移動通信設(shè)備向一臺后端服務(wù)器發(fā)送一次更新請求。當(dāng)然,在其他的實例中,更新可以不經(jīng)過請求而發(fā)送。
在一個實施例中,更新可以由移動通信設(shè)備通過使用一個請求數(shù)據(jù)結(jié)構(gòu)而進(jìn)行請求。此數(shù)據(jù)結(jié)構(gòu)還可以選擇性地包括統(tǒng)一資源定位器(URL)變量、移動通信識別變量、應(yīng)用程序接口版本變量、偵測邏輯變量、簽名版本變量、和/或部分號碼變量等變量。
表#22說明了可以用于此目的的一個示范性的URL。
表#22<BASE-URL>?dev=<DEV-ID>&mdo=<MDO-VER>&eng=<ENG-VER>&sdb=<SDB-VER>&chk=<CHUNK>
以下是一個描述上述URL變量的表格
表#23說明了一個符合上述描述的URL的一個特定范例。
表#23http://update.mcafeeacsa.com/504i?dev=X504i05&mdo=2&eng=3&sdb=56&chk=1以上表#23的URL指定了基本-URL″http://update.mcafeeacsa.com/504i″,″X504i05″為設(shè)備識別碼,API版本2,惡意代碼偵測邏輯版本3,以及簽名數(shù)據(jù)庫版本56。應(yīng)該注意,當(dāng)移動通信設(shè)備最初聯(lián)絡(luò)后端服務(wù)器的時候,其″數(shù)據(jù)塊″或部分、號碼可以設(shè)定為1。此外,基本-URL可以通過讓MDoConfigGet API使用″UpdateURL″配置變量而獲得。
在收到請求之后,后端服務(wù)器通過將已儲存的惡意代碼偵測邏輯及簽名數(shù)據(jù)庫版本同在URL中編碼存放的版本信息相比較,從而決定哪個更新包需要被下載。
如果不需要進(jìn)行更新,后端會返回一個無內(nèi)容的回應(yīng)。在操作1701中,移動通信設(shè)備收到了作為第一部分的回應(yīng)。如果決定第一部分包括上述的無內(nèi)容回應(yīng)(參見決定1702),方法1700被中止,這是因為沒有更新需要下載。該特征對適應(yīng)移動通信框架中固有的有限帶寬是有益的。
另一方面,如果一個更新包的第一個部分被返回,方法1700將在收到更新的第一部分之后(或者有可能的是與之同時)繼續(xù)接收更新的其它部分。請注意操作1704-1708。應(yīng)該注意第一部分可伴隨著整包的大小及部分的計數(shù)信息。
在下載剩余的更新部分時,可以對所下載URL的部分號碼作限定。表#24說明了一個指定部分號碼″3″的URL的特定范例。
表#24http://update.mcafeeacsa.com/504i?dev=X504i05&mdo=2&eng=3&sdb=56&chk=3在一個實施例中,可以決定更新的完整性。相應(yīng)地,在是否被核實了更新的完整性的基礎(chǔ)上,可以有條件地將更新安裝于掃描子系統(tǒng)中。
作為一種選擇,更新的完整性可以通過使用一個簽名來確定。此簽名可以同更新的一個部分一起接收(即一個最后部分)。之后,可以將該簽名同使用更新的每個部分生成的另一簽名進(jìn)行比對。請注意操作1710。
在一個實施例中,簽名可以通過一個RSA私鑰生成并在移動通信設(shè)備上使用一個包含于更新內(nèi)的相應(yīng)公鑰進(jìn)行認(rèn)證。簽名核實及生成可通過使用一個特定的認(rèn)證函數(shù)庫作進(jìn)一步運(yùn)行。
假設(shè)完整性被核實,任何由掃描子系統(tǒng)運(yùn)行的掃描會被停頓或中止。請注意操作1712。應(yīng)該注意該停頓是可選擇的。
接下來,可將更新安裝于掃描子系統(tǒng)。請注意操作1714。在實例中任何掃描被停頓的地方,一旦更新被安裝于掃描子系統(tǒng),之后可以繼續(xù)使用掃描子系統(tǒng)進(jìn)行掃描。參見操作1716。
為適應(yīng)移動通信框架中固有的有限帶寬,更新的某些部分的大小可以最小化。此外,可以對更新的部分進(jìn)行壓縮。
在另一個實施例中,可將每個更新部分的格式設(shè)計為能夠適應(yīng)移動通信框架中固有的有限帶寬。更多關(guān)于此類格式的信息將在下文作闡述。
表#25說明了一個下載更新各部分的示范性格式。
表#25
在表#25中列出的上述部分的每一個部分在表#26中作如下定義。
表#26
每個部分由一個文件頭和數(shù)據(jù)組成。文件頭可以指明更新的相關(guān)部分的一個識別碼、更新的相關(guān)部分的一段長度等等。此外,文件頭可以指定包含的數(shù)據(jù)名稱與長度,并用一個額外的CR+LF對將其與實際數(shù)據(jù)相分隔。表#27列出了與文件頭相關(guān)聯(lián)的示范性數(shù)據(jù)/內(nèi)容的名稱。
表#27
表#28說明了一個示范性的更新包。
表#28
抽象函數(shù)庫API如前所述,提供了一個獨(dú)立于平臺的系統(tǒng)及相關(guān)的方法以用于一臺移動通信設(shè)備。其包括一獨(dú)立于平臺的掃描子系統(tǒng),可同用于掃描的移動通信設(shè)備的操作系統(tǒng)進(jìn)行通信。另外還提供了一個獨(dú)立于平臺的應(yīng)用程序接口,為操作系統(tǒng)及掃描子系統(tǒng)之間提供界面幫助。獨(dú)立于平臺的應(yīng)用程序接口包括了一個抽象函數(shù)庫,用于將獨(dú)立于平臺的掃描子系統(tǒng)接駁于移動通信設(shè)備及相關(guān)聯(lián)的操作系統(tǒng)。
通過該設(shè)計,掃描子系統(tǒng)可以獨(dú)立于平臺,并由此能在任何類型的操作系統(tǒng)/移動通信設(shè)備的組合上加以執(zhí)行。
在一個實施例中,抽象函數(shù)庫可以支持系統(tǒng)初始化、函數(shù)庫初始化、出錯函數(shù)、內(nèi)存分配、輸入/輸出(I/O)、數(shù)據(jù)認(rèn)證、同步、超文本傳輸協(xié)議、共享內(nèi)存、系統(tǒng)時間、設(shè)備信息、以及調(diào)試。更多關(guān)于上述應(yīng)用程序接口的一個可選擇實例的示范性信息將在附件A中進(jìn)行闡述。
雖然上文描述了不同的實施例,但容易理解,它們僅通過范例的形式被提出,而不具有限制性。因此,某個特定實例的應(yīng)用廣度與范圍不應(yīng)該由任何以上所描述的示范性實例所限制,而應(yīng)只根據(jù)權(quán)利要求及與其有同等效果的陳述所確定。
附件A當(dāng)前的應(yīng)用程序接口(API)包括以下子系統(tǒng)· 系統(tǒng)初始化· 函數(shù)庫初始化· 出錯函數(shù)· 堆內(nèi)存分配· 永續(xù)性內(nèi)存/儲存體I/O· 數(shù)據(jù)認(rèn)證· 同步對象(信標(biāo))· HTTP API· 共享內(nèi)存· 系統(tǒng)時間· 設(shè)備信息· 調(diào)試本附件中還描述了一套定義于抽象函數(shù)庫(AL)層的C-語言定義,供在API函數(shù)庫中使用。
系統(tǒng)初始化依賴于平臺/系統(tǒng)的啟動初始化是由AlLibrarySysInit()函數(shù)運(yùn)行的。該函數(shù)的設(shè)計使其能從先前描述過的MDoSystemlnit()函數(shù)被調(diào)用。
AlLibrarySysInit描述運(yùn)行依賴于系統(tǒng)的初始化原型int AlLibrarySysInit(void);
參數(shù)無返回值成功則返回0,否則為-1。
函數(shù)庫初始化平臺抽象API函數(shù)庫通過使用Al InitLibrary()函數(shù)被初始化。在一個抽象API函數(shù)被調(diào)用之前,抽象函數(shù)庫就被初始化一次。當(dāng)AlCleanupLibrary()函數(shù)被調(diào)用時,由Al InitLibrary()獲得并初始化的系統(tǒng)資源被釋放。
AlInitLibrary描述運(yùn)行函數(shù)庫初始化。該函數(shù)將由MDoLibraryOpen()函數(shù)調(diào)用。
原型int AlInitLibrary(void);參數(shù)無返回值成功則返回0,否則為-1。
AlCleanupLibrary描述釋放由Al InitLibrary()函數(shù)獲得的系統(tǒng)資源。該函數(shù)將由先前指定的MDoLibraryClose()函數(shù)調(diào)用。
原型void AlCleanupLibrary(void);參數(shù)無返回值無出錯函數(shù)AL函數(shù)庫包含了一套出錯函數(shù),該套函數(shù)用于設(shè)定并獲取有關(guān)特定任務(wù)/線程的出錯代碼。抽象層實現(xiàn)者應(yīng)負(fù)責(zé)設(shè)定適當(dāng)?shù)某鲥e代碼及組件代碼。
AlGetLastError描述返回調(diào)用任務(wù)/線程的最后出錯代碼值。函數(shù)通過使用AlSetLastError()函數(shù)設(shè)定返回的值。
AlErrorCode數(shù)據(jù)類型是使用一個32-位無符號值進(jìn)行內(nèi)部表達(dá)的數(shù)據(jù)類型。
原型AlErrorCode AlGetLastError(void);參數(shù)無返回值調(diào)用線程/任務(wù)的最后出錯值設(shè)定是通過使用AlSetLastError()函數(shù)完成的
AlSetLastError描述為調(diào)用線程/任務(wù)設(shè)定最后出錯代碼原型void AlSetLastError(AlErrorCode errorCode);參數(shù)errorCode[in]32-位出錯代碼值返回值無出錯/狀態(tài)代碼
上述的表格列出了一套AL組件及出錯代碼。一個使用AlSetLastError函數(shù)報告的出錯是一個由組件代碼與出錯代碼組合而形成的32-位的值。設(shè)定在AL層次的出錯通過使用MDoGetLastError函數(shù)而獲取,以方便在出錯發(fā)生時采取適當(dāng)?shù)男袆印?br>
堆內(nèi)存分配抽象層提供了一個堆內(nèi)存分配API,以方便一個調(diào)用應(yīng)用程序(例如″調(diào)用函數(shù)″)來動態(tài)地分配所需的內(nèi)存。被分配的內(nèi)存被假設(shè)為可在全局范圍內(nèi)共享,即可以由多個應(yīng)用/任務(wù)所存取。AlMemAlloc()與AlMemFree()API函數(shù)提供了堆內(nèi)存的分配與取消分配。
AlMemAlloc描述分配一個指定量的動態(tài)內(nèi)存并向該內(nèi)存返回一個指針。被分配的內(nèi)存塊可直接由調(diào)用函數(shù)(即調(diào)用應(yīng)用程序)所存取,而不需要一個特別的操作(即內(nèi)存鎖定)。
原型void*AlMemAlloc(unsigned int uSize);參數(shù)uSize[in]以字節(jié)計算的需分配內(nèi)存的量返回值一個指向被分配內(nèi)存的指針。如請求失敗或請求大小為零則返回NULL。
也可參見AlMemFree()AlMemFree描述釋放由AlMemAlloc()函數(shù)返回的動態(tài)內(nèi)存塊原型void AlMemFree(void*pData);參數(shù)pData[in]指向一個需釋放內(nèi)存塊的指針返回值無也可參見AlMemAlloc()永續(xù)性儲存體I/O永續(xù)性儲存體(例如閃存)存取是通過使用一個文件I/O API進(jìn)行的。參見下文
文件句柄類型AL_FILE_HANDLE被定義為typedef struct AL_FILE_HANDLE_struct{} *AL_FILE_HANDLE;而一個用來指定一個無效的永續(xù)性儲存體句柄INVALID_AL_FILE_HANDLE的常量被定義為#define INVALID_AL_FILE_HANDLE((AL_FILE_HANDLE)O)文件狀態(tài)緩沖區(qū)類型AlStatBuf被定義為typedef struct AlStatBuf_struct{unsigned long ulsize;unsigned long ulTime;}AlStatBuf;AlFileOpen描述打開指定的文件并返回其句柄。
原型AL_FILE_HANDLE AlFileOpen(const char*pszFilename,int iMode);參數(shù)pszFilename[in]文件名/路徑字符串iMode[in]文件存取模式
AL_OPEN_READ打開文件供讀取AL_OPEN_WRITE打開文件供讀取與寫入返回值如成功則返回文件句柄,否則為INVALID_AL_FILE_HANDLE。
也可參見AlFileClose(),AlFileRead(),AlFileWrite()AlFileClose描述關(guān)閉并釋放與特定文件句柄相關(guān)聯(lián)的系統(tǒng)資源原型void AlFileClose(AL_FILE_HANDLE hFile);參數(shù)hFile[in]由AlFileOpen()返回的文件句柄返回值無也可參見AlFileOpen(),AlFileRead(),AlFileWrite()AlFileSeek描述重新定位讀/寫文件偏移量原型long AlFileSeek(AL_FILE_HANDLE hFile,long lOffset,intiWhence);參數(shù)hFile[in]一個打開文件句柄lOffset[in]與iWhence指示符有關(guān)的文件偏移量iWhence[in]初始位置。可能的值有AL_SEEK_SET 偏移量參數(shù)指定絕對文件偏移量。換言之,自文件開始處的偏移量。
MJ_SEEK_CUR指定相對偏移量-偏移量參數(shù)從當(dāng)前文件偏移量指定文件偏移量。
AL_SEEK_END 從文件末尾指定文件偏移量。
返回值如成功則返回文件偏移量,否則為-1L也可參見AlFileOpen(),AlFileClose(),AlFileRead(),AlFileWrite()AlFileRead描述從一個文件讀取一塊數(shù)據(jù)原型unsigned int AlFileRead(AL_FILE_HANDLE hFile,void*pBuffer,unsigned int uSize);參數(shù)hFile[in]一個打開文件句柄pBuffer[out]數(shù)據(jù)緩沖區(qū)uSize[out]需讀取數(shù)據(jù)的量返回值如成功則返回讀取的字節(jié)數(shù),否則為-1也可參見AlFileOpen(),AlFileClose(),AlFileSeek(),AlFileWrite()AlFileWrite描述向一個文件寫入一塊數(shù)據(jù)原型unsigned int AlFileWrite(AL_FILE_HANDLE hFile,void cons t*pBuffer,unsigned int uSize);
參數(shù)hFile[in]一打開文件句柄pBuffer[int]存有需寫入數(shù)據(jù)的緩沖區(qū)uSize[out]需寫入數(shù)據(jù)的量返回值如成功則返回寫入數(shù)據(jù)的量,否則為-1也可參見AlFileOpen(),AlFileClose(),AlFileSeek(),AlFileRead()AlFileSetSize描述調(diào)整打開文件大小。
對于不支持本地文件調(diào)整大小的平臺,抽象函數(shù)庫在Al FileClose()函數(shù)被調(diào)用時通過限定儲存在每個文件開始處的大小信息執(zhí)行該功能。
原型unsigned int AlFileSetSize(AL_FILE_HANDLE hFile,unsigned int uSize);參數(shù)hFile[in]引用一個帶有寫入模式的打開文件的句柄
uSize[out]以字節(jié)計算的新文件的長度返回值如成功則返回0,否則為-1也可參見AlFileStat()AlFileStat描述獲取文件大小及創(chuàng)建時間戳。
對于不提供本地文件大小和/或時間戳信息獲取方法的平臺,抽象函數(shù)庫通過在每個文件的開始處儲存信息執(zhí)行本函數(shù)。
原型int AlFileStat(char const*pszFilename,AlStatBuf*pStat);參數(shù)pszFilename[in]獲取信息的文件名稱pStat[out]指向一個用于返回大小與時間戳信息結(jié)構(gòu)的指針。該結(jié)構(gòu)包含以下域typedef struct AlStatBuf struct{
unsigned long ulSize;/*以字節(jié)計算的大小*/unsigned long ulTime; /*創(chuàng)建時間*/}AlStatBuf;返回值如成功則返回0,否則為-1數(shù)據(jù)認(rèn)證平臺抽象API包括一套用于認(rèn)證數(shù)據(jù)的函數(shù)。數(shù)據(jù)認(rèn)證API用于認(rèn)證所下載的惡意軟件的簽字?jǐn)?shù)據(jù)庫。
一旦調(diào)用函數(shù)通過使用AlDaOpen函數(shù)獲得了一個認(rèn)證對象,會對AlDaVerify作出一次調(diào)用,以核實所提供的數(shù)據(jù)。
AlDaGetSignerlnfo()用于獲取一個簽字者信息。AlDaClose()用于關(guān)閉并釋放數(shù)據(jù)認(rèn)證句柄及相關(guān)的系統(tǒng)資源。以下是一個示范性的數(shù)據(jù)認(rèn)證API
由AlDaOpen()函數(shù)返回的數(shù)據(jù)認(rèn)證句柄被定義為ALHANDLE(AL_DA_HANDLE);#define INVALID_AL_DA_HANDLE((AL_DA_HANDLE)0)簽名者信息結(jié)構(gòu)被定義為#define MAX_DA_SIGNER_NAME 128typedef struct DaSignerlnfo_struct{char szSignerName[MAX DA_SIGNER_NAME];}DaSignerlnfo;AlDaOpen描述創(chuàng)建并返回一個數(shù)據(jù)認(rèn)證句柄。
原型AL_DA_HANDLE AlDaOpen(const void*pSig,unsigned int uSigSize);參數(shù)pSig[in]指向一個簽名數(shù)據(jù)的指針uSigSize[in]以字節(jié)計算的簽名大小返回值如成功則返回數(shù)據(jù)認(rèn)證句柄,否則為INVALID_AL_DA_HAWDLE也可參見
AlDaClose(),AlDaUpdate(),AlDaVerify(),AlDaGetSignerlnfo()AlDaClose描述釋放用于一個數(shù)據(jù)認(rèn)證句柄的系統(tǒng)資源。
原型void AlDaClose(AL_DA_HANDLE hDa);參數(shù)hDa[in]由AlDaOpen返回的數(shù)據(jù)認(rèn)證句柄。
返回值無也可參見AlDaOpen(),AlDaUpdate(),AlDaVerify(),AlDaGetSignerinfo()A1DaVerify描述運(yùn)行數(shù)據(jù)認(rèn)證原型intAlDaVerify(AL_DA_HANDLE hDa,int(*pfRead)(void*,void*,int),int iTotalSize,void*pPrivate);
參數(shù)hDa[in]數(shù)據(jù)認(rèn)證句柄pfRead[in]調(diào)用函數(shù)的回調(diào)函數(shù),用以讀取數(shù)據(jù)(參見)。如有一個出錯它會返回-1,如再無數(shù)據(jù)可讀則返回0,否則返回所讀取數(shù)據(jù)的量,并返回到AlDaVerify函數(shù)。預(yù)計該函數(shù)將被多次調(diào)用。
iTotalSize[in]需核實的全部數(shù)據(jù)大小。
pPrivate[in]由pfRead回調(diào)函數(shù)傳遞的調(diào)用函數(shù)的私有數(shù)據(jù)。
返回值如應(yīng)用數(shù)據(jù)得到認(rèn)證則為0,否則為-1。
也可參見AlDaOpen(),AlDaClose(),AlDaGetSignerlnfo()以下為一個樣本數(shù)據(jù)讀取的回調(diào)函數(shù)。
AlDaGetSienerlnfo描述獲取數(shù)據(jù)認(rèn)證簽名者信息原型int AlDaGetSignerMo(ALJDAJHANDLE hDA,DaSignerlnfo*pDSI);參數(shù)hDa[in]數(shù)據(jù)認(rèn)證句柄pDSI[out]指向一個含有簽名者信息的結(jié)構(gòu)的指針返回值如成功獲得簽名者信息則返回0,否則為-1也可參見AlDaOpen(),AlDaClose(),AlDaVerify()同步對象資源同步及控制是通過使用一個信標(biāo)來達(dá)到的。抽象函數(shù)庫內(nèi)包括一套用以創(chuàng)建、打開、關(guān)閉并限定一個信標(biāo)對象的函數(shù)。以下是一個示范性信標(biāo)APl。
AlSemCreate描述創(chuàng)建一個被命名的信標(biāo),設(shè)定內(nèi)部計數(shù)為零,并返回其句柄。
原型AL_SEM_HANDLE AlSemCreate(char const*pszName);參數(shù)pszName[in]信標(biāo)名稱字符串返回值如成功則返回信標(biāo)句柄,否則為INVALro_AL_SEM_HANDLE也可參見AlSemOpen(),AlSemClose(),AlSeraGet(),AiSemRelease()AlSemOpen描述返回一個句柄至一個現(xiàn)存的信標(biāo)。
原型AL_SEM_HANDLE AlSemOpeh(char const*pszName);
參數(shù)pszName[in]信標(biāo)名稱返回值如成功則返回信標(biāo)句柄,否則為INVALID_AL_SEM_HANDLE也可參見AlSemCreate(),AlSemClose(),AlSemGet(),AlSemRelease()AlSemClose描述關(guān)閉并釋放與特定信標(biāo)句柄相關(guān)聯(lián)的系統(tǒng)資源。信標(biāo)使用/引用計數(shù)也減少,且如計數(shù)達(dá)到零,被引用的信標(biāo)對象會被銷毀。
原型void AlSemClose(AL_SEM_HANDLE hSem);參數(shù)hSem[in]使用AlSemCreate()or AlSemOpen()而獲得的信標(biāo)句柄返回值無也可參見AlSemCreate(),AlSemOpen(),AlSemGet(),AlSemRelease()
AlSemGet描述獲得指定的信標(biāo)。如進(jìn)入時內(nèi)部計數(shù)大于零,其數(shù)值會減少一位并立即被返回。如進(jìn)入時內(nèi)部計數(shù)為零,調(diào)用被阻止,直到其它任務(wù)/線程調(diào)用AlSemRelease()從而使之大于零。
原型int AlSemGet(AL_SEM_HANDLE hSem);參數(shù)hSem[in]信標(biāo)句柄返回值成功則返回0,否則為-1也可參見AlSemCreate(),AlSemOpen(),AlSemClose(),AlSemRelgase()AlSemRelease描述釋放信標(biāo),內(nèi)部計數(shù)增加1原型int AlSemRelease(AL_SEM_HANDLE hSem);參數(shù)hSem[in]信標(biāo)句柄返回值成功則返回0,否則為-1也可參見AlSemCreate(),AlSemOpen(),AlSeraClose(),AlSemGet()HTTP API抽象函數(shù)庫內(nèi)包括一套函數(shù),該套函數(shù)能通過使用一個調(diào)用函數(shù)提供的回調(diào)結(jié)構(gòu)提供HTTP網(wǎng)絡(luò)I/O。以下是一個示范性的HTTP API。
由AlHttpOpen()函數(shù)返回的HTTP句柄被定義為typedef struct AL_HTTP HANDLE_struct{}*AL_HTTP_HANDLE;#define INVALID AL HTTP_HANDLE((ALJ3TTP_HANDLE)O)HTTP回調(diào)結(jié)構(gòu)AlHttpCallbacks被定義為typedef struct AlHttpCal lbacks_struct{
unsigned int(*pWrite)(void*pPrivate,void const* pData,unsigned int uSize);unsigned int(*pRead)(void* pPrivate.
void* pData,unsigned int uSize);unsigned int(*pGetSize)(void*pPrivate);unsigned int(*pSetSize)(void* pPrivate,unsigned int uSize);}AlHttpCallbacks;在以上HTTP回調(diào)結(jié)構(gòu)中所給出的回調(diào)函數(shù)提供了以下各種功能pWrite由系統(tǒng)HTTP函數(shù)庫調(diào)用,以儲存收到的HTTP請求數(shù)據(jù)。
pRead 用于獲取申請數(shù)據(jù),以便作為一個HTTP請求的一部分被發(fā)送。
pGet Size 提供帶申請者的內(nèi)容數(shù)據(jù)大小的HTTP函數(shù)庫,″Content-Length″。
pSet Size 由HTTP函數(shù)庫調(diào)用,以便在數(shù)據(jù)到位時向調(diào)用的應(yīng)用程序通知收到的內(nèi)容數(shù)據(jù)的大小。
AlHttpOpen描述創(chuàng)建并向HTTP函數(shù)庫返回一個句柄。
原型AL_HTTP_HANDLE AlHttpOpen(void);參數(shù)無返回值如創(chuàng)建一個HTTP實例失敗,則返回INVALID_AL_HTTP_HMTDLE也可參見AlHttpClose()AlHttpClose描述關(guān)閉并釋放與一個HTTP句柄相關(guān)聯(lián)的系統(tǒng)資源。
原型void AlHttpClose(AL_HTTP_HANDLE hHTTP);參數(shù)hHTTP[in]由AlHttpOpen()函數(shù)返回的HTTP函數(shù)庫句柄。
返回值無也可參見AlHttpClose()AlHttpExec描述在指定的URL上執(zhí)行一個HTTP方法(″GET″或″POST″),并帶有可選擇的文件頭信息。
原型
intAlHttpExec(AL_HTTP_HANDLEhHTTP,char const* pszMethod,char const* pszURL,AlHttpCallbacks* pHttpCb,void* pPrivate);參數(shù)hHTTP[in]由AlHttpOpen()函數(shù)返回的HTTP函數(shù)庫句柄pszMethod[in]HTTP方法規(guī)格。HTTP″GET″或″POST″pszURL[in]作出HTTP請求所在地址的URLpHttpCb[in]指向一套調(diào)用函數(shù)指定的HTTP I/O函數(shù)的指針。HTTP函數(shù)庫使用在AlHttpCallbacks結(jié)構(gòu)中指定的函數(shù),以進(jìn)行數(shù)據(jù)I/OpPrivate[in/out]指向一個調(diào)用函數(shù)數(shù)據(jù)的指針,該調(diào)用函數(shù)數(shù)據(jù)需傳回在AlHttpCallbacks結(jié)構(gòu)中指定的回調(diào)函數(shù)返回值成功則返回0,否則為-1也可參見AlHttpOpen(),AlHttpClose()
共享內(nèi)存存放函數(shù)庫的共享對象的系統(tǒng)內(nèi)存地址是通過使用AlShmAddress()函數(shù)而得到的。該共享信息區(qū)域在設(shè)備啟動時間被分配/準(zhǔn)備,而且為函數(shù)庫的不同實例所引用。
AlShmAddress描述返回共享內(nèi)存地址。
原型void*AlShmAddress(void);參數(shù)無返回值如成功則返回共享內(nèi)存的地址,否則為NULL時間AlTmGetCurrent()向調(diào)用函數(shù)提供以秒為單位的當(dāng)前系統(tǒng)時間。
AlTmGetCurrent描述獲得當(dāng)前的系統(tǒng)時間。
原型unsigned long AlTmGetCurrent(void);參數(shù)無返回值如成功,則返回自紀(jì)元(協(xié)調(diào)世界時00:00:00,1970年1月1日)以來的以秒為單位的時間。如出錯,則返回((unsigned long)-1L)。
設(shè)備信息AIDevGetInfo描述獲取設(shè)備的特定信息。由此函數(shù)返回的設(shè)備識別字符串被API使用。
原型int AlDevGetInfo(AlDeviceInfo*pDeviceInfo);參數(shù)pDevicelnfo[out]指向設(shè)備信息的指針AlDevicelnfo結(jié)構(gòu)被定義為#define AL_MAX_DEVICE_ID 32typedef struct AlDeviceinfo struct{char szDeviceID[AL_MAX_DEVICE_ID];}AlDevicelnfo;識別字符串szDevicelD是一個獨(dú)一無二的終端/設(shè)備識別碼-它用來將一個特定的移動通信設(shè)備與所有其它的設(shè)備單獨(dú)識別出來。此信息用于為移動通信設(shè)備構(gòu)建一個惡意軟件簽名下載URL。它不能包含任何不允許在一個URL中出現(xiàn)的字符(即空格)。
返回值成功則返回0,失敗則為-1調(diào)試AlDbgQutput描述向一個調(diào)試控制臺輸出調(diào)試字符串。該函數(shù)是一個用于發(fā)布版本的零函數(shù)原型int AlDbgOutput(char const*pszOutput);參數(shù)pszOutput[in]向調(diào)試控制臺輸出的字符串返回值成功則返回0,失敗則為-權(quán)利要求
1.一種有效更新移動通信設(shè)備的掃描子系統(tǒng)的方法,其特征在于包括收到一次更新的第一部分,該更新經(jīng)過改裝而適用于移動通信設(shè)備的掃描子系統(tǒng);除了接收到所述更新的第一部分之外,收到所述更新的其它部分;和將所述更新安裝于所述掃描子系統(tǒng)。
2.如權(quán)利要求1所述的方法,其特征在于,還包括確定所述更新的完整性。
3.如權(quán)利要求2所述的方法,其特征在于,如果所述更新的完整性得到核實,則將所述更新安裝于所述掃描子系統(tǒng)。
4.如權(quán)利要求2所述的方法,其特征在于,所述更新的完整性通過使用一個簽名來確定。
5.如權(quán)利要求4所述的方法,其特征在于,所述簽名與所述更新的一個部分一起收到。
6.如權(quán)利要求4所述的方法,其特征在于,所述簽名同另一個由利用所述更新的每一個部分所生成的簽名作比對。
7.如權(quán)利要求4所述的方法,其特征在于,所述簽名僅與所述更新的其它部分中的最后一個一起收到。
8.如權(quán)利要求1所述的方法,其特征在于,所述更新的部分的大小被最小化。
9.如權(quán)利要求1所述的方法,其特征在于,所述更新的部分被壓縮。
10.如權(quán)利要求1所述的方法,其特征在于,還包括確定所述第一部分是否為空。
11.如權(quán)利要求10所述的方法,其特征在于,在確定所述第一部分是否為空的基礎(chǔ)上,有條件地接收所述更新的其它部分。
12.如權(quán)利要求1所述的方法,其特征在于,還包括暫停使用所述掃描子系統(tǒng)所進(jìn)行的掃描。
13.如權(quán)利要求12所述的方法,其特征在于,還包括在所述更新被安裝于掃描子系統(tǒng)中之后,使用所述掃描子系統(tǒng)重新開始掃描。
14.如權(quán)利要求1所述的方法,其特征在于,所述更新由所述移動通信設(shè)備請求。
15.如權(quán)利要求14所述的方法,其特征在于,所述更新由所述移動通信設(shè)備使用一個請求數(shù)據(jù)結(jié)構(gòu)而請求。
16.如權(quán)利要求15所述的方法,其特征在于,所述請求數(shù)據(jù)結(jié)構(gòu)包括一些變量,這些變量選自由統(tǒng)一資源定位器(URL)變量、移動通信識別碼變量、應(yīng)用程序接口版本變量、偵測邏輯變量、簽名版本變量及部分號碼變量組成的群組。
17.如權(quán)利要求15所述的方法,其特征在于,所述請求數(shù)據(jù)結(jié)構(gòu)包括一些變量,這些變量選自包括統(tǒng)一資源定位器(URL)變量、移動通信識別碼變量、應(yīng)用程序接口版本變量、偵測邏輯變量、簽名版本變量及部分號碼變量的群組。
18.如權(quán)利要求1所述的方法,其特征在于,所述更新的每個部分包括一文件頭。
19.如權(quán)利要求18所述的方法,其特征在于,所述文件頭指示了所述更新的相關(guān)部分的一個識別碼。
20.如權(quán)利要求18所述的方法,其特征在于,所述文件頭指示了所述更新相關(guān)部分的長度。
21.如權(quán)利要求1所述的方法,其特征在于,所述移動通信設(shè)備包括蜂窩式電話。
22.一種計算機(jī)程序產(chǎn)品,用于有效地更新移動通信設(shè)備的掃描子系統(tǒng),其特征在于包括用于接收一個更新的第一部分的計算機(jī)代碼,該更新可以被改裝以用于更新移動通信設(shè)備的掃描子系統(tǒng);用于接收除了所述更新的第一部分之外的其它部分的計算機(jī)代碼;和用于將所述更新安裝于所述掃描子系統(tǒng)的計算機(jī)代碼。
23.一種用于有效更新移動通信設(shè)備的掃描子系統(tǒng)的系統(tǒng),其特征在于包括一后端服務(wù)器;和一移動通信設(shè)備,可與所述后端服務(wù)器進(jìn)行無線通信,以接收可改裝用于更新所述移動通信設(shè)備的掃描子系統(tǒng)的一個更新的第一個部分,以及接收除了所述更新的第一部分之外該更新的其它部分,并將所述更新安裝于所述掃描子系統(tǒng)。
24.一種通過使用后端服務(wù)器從而有效更新移動通信設(shè)備的一個描子系統(tǒng)的方法,其特征在于包括發(fā)送可改裝而用于更新移動通信設(shè)備的掃描子系統(tǒng)一個的更新的第一部分;發(fā)送除了所述更新的第一部分之外該更新的其它部分;其中所述更新被安裝于所述移動通信設(shè)備的所述掃描子系統(tǒng)。
25.一種用于更新移動通信設(shè)備的掃描子系統(tǒng)的方法,其特征在于包括發(fā)送要求一個更新的請求,所述更新可改裝而用于更新移動通信設(shè)備的掃描子系統(tǒng);響應(yīng)所述請求接收所述更新的第一部分;確定所述第一部分是否為空;如所述第一部分確定不為空,則接收除了所述更新的第一部分之外該更新的其它部分;核實與所述更新相關(guān)的一個簽名;暫停使用所述掃描子系統(tǒng)進(jìn)行的掃描;如果所述簽名得到核實,則將所述更新安裝于所述掃描子系統(tǒng);和在所述更新被安裝于所述掃描子系統(tǒng)之后,使用所述掃描子系統(tǒng)重新開始掃描。
全文摘要
提供一個系統(tǒng)、方法及計算機(jī)程序產(chǎn)品,以有效地更新一臺移動通信設(shè)備的一個掃描子系統(tǒng)。首先接收的是為更新一臺移動通信設(shè)備的一個掃描子系統(tǒng)而經(jīng)過改裝的一個更新的第一部分。此外,除了接收更新的第一部分之外,更多的更新部分將被接收。之后將該更新安裝于掃描子系統(tǒng)。
文檔編號G06F9/44GK1981263SQ200480016993
公開日2007年6月13日 申請日期2004年4月5日 優(yōu)先權(quán)日2003年4月17日
發(fā)明者維克托·古內(nèi)索夫, 達(dá)維德·利本齊, 邁克爾·C·帕克, 浦川安孝, 石井憲司, 藤田正德 申請人:邁克非公司, Ntt移動通訊公司