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