利用移动通信设备进行内容/上下文相关扫描的系统、方法以及计算机程序产品的制作方法

文档序号:6487250阅读:242来源:国知局

专利名称::利用移动通信设备进行内容/上下文相关扫描的系统、方法以及计算机程序产品的制作方法
技术领域
:本发明涉及移动通信设备的安全领域,具体地说,是关于扫描移动通信设备以侦测恶意软件。
背景技术
:在过去的十年中,移动蜂窝式电话的数目与使用增长迅速。最近一段时期,引入了无线设备,它能将移动电话与个人数字助理(PDA)的功能相结合。可以预计,在未来一段时间内,随着新型蜂窝式电信标准(例如GPRS、UMTS及WAP)使得跨无线界面上的高速数据传输成为可能,这一领域将经历强劲的增长。可以预计,无线通信平台将有可能遭受到所谓的恶意软件(malware),如病毒、特洛伊木马、计算机蠕虫(下文中统称为<病毒'),以及其它干扰性/有害内容的侵袭;其侵害方式与现今个人计算机以及工作站所受侵害方式大致相同。事实上已经有多种移动电话病毒被确认。为抵御病毒的袭击,必须在移动平台上布置安装防病毒软件,其方式与桌上型计算机环境的布置方式大致相同。多种不同的桌上型防病毒应用软件现已问世。这些应用软件的大部分依靠一种基本的扫描引擎,它会寻找可疑档案中是否存在预先确定的病毒签名。这些签名储存在一个数据库中,必须经常对其进行更新,以反映最新识别的病毒信息。一般来说,用户们可以每隔一段时间通过互连网、从接收的电子邮件、或从一张光盘和软盘下载替换用数据库。用户们也需要时常更新软件引擎,以便于在发现新类型的病毒时利用最新的病毒侦测技术。移动无线平台给软件开发商们(包括防病毒软件开发商)带来了一系列的问题。具体地,移动无线应用程序通常没有被标准化,这就要求扫描器在执行扫描工作以前,需要先识别应用程序的信息。不幸的是,此信息搜集给扫描工作带来了很大损害。
发明内容本发明提供了利用移动通信设备扫描应用程序数据的系统、方法以及计算机程序产品。包括一安装于移动通信设备的应用程序,它可以通过无线网络进行通信。该应用程序可被改装,以利用移动通信设备执行工作。一与其相关联的扫描子系统与该应用程序进行通信,以扫描与应用程序执行的任务相关的应用数据。使用时,应用程序将与应用数据有关的信息传输给扫描子系统,从而有利于扫描系统的扫描。在一个实施例中,扫描可包括按需式病毒扫描和和/或按访问病毒扫描。在另一个实施例中,应用程序可包括一邮件应用程序。应用程序还可进一步包括一浏览器应用程序,其任务包括浏览网络。另外,应用程序可包括一电话薄应用程序,其任务包括管理多个电话号码。作为一种选择,该应用程序可包括一消息应用程序,其任务包括传输消息。应当注意可包括任何类型的程序。(例如Java应用程序等)。在再一个实施例中,传输给扫描子系统的信息可涉及各种类型的应用数据,包括超文本标记语言(HTML)类型、统一资源定位符(URL)类型、电子邮件类型、电话号码类型、java类型、文本类型,和/或其他未知类型。作为一种选择,该信息还可进一步确认与每种应用数据类型相关的格式。该功能可通过对该信息设置与不同应用数据类型相关的变量而实现。在另一个实施例中,该信息可显示扫描系统的扫描时间。该时间可能涉及应用数据的接收、应用数据的存储、应用数据的递交,和/或应用数据的调用。另外,该信息可显示是否扫描系统的扫描为可选或强制。由此,该信息可改进扫描系统的扫描时间。另外,该信息还可提高扫描系统的扫描准确性。图1是移动通信框架一个实施例示意图;图2是移动通信框架另一个实施例示意图;图3是与一个移动通信设备相关联的一个架构的实施例示意图;图4是一个通过使用一台移动通信设备访问安全或内容分析功能的系统的实施例示意图;图5是根据图4所示系统的一个应用服务器的实施例,通过使用一台移动通信设备访问安全或内容分析功能框架的示意图;图6是根据图4所示系统的一个重复加载函数库的实施例,通过使用一台移动通信设备访问安全或内容分析功能框架的示意图;图7是在图4所示系统下执行的一个按需式扫描系统的示意图;图8是一个应用程序接口(API)的各种不同组件的一个阶梯状关系的实施例示意图,它可以用于在移动应用程序与一个扫描子系统之间提供接口;图9是一个示范型函数库接口启动的示意图;图10是一个出错代码功能的一个示范性格式的实施例示意图;图ll是一个扫描子系统API的调用次序的实施例示意图;图12是一个示范性配置API的调用次序的实施例示意图;图13是各种不同的示范性扫描数据类型的示意图,这些数据类型可以由应用程序通过一个API传递到扫描子系统;图14是一个包含恶意软件严重性标识和应用程序表现水准的位-域变量的示范性实施例示意图;图15是一个图表示意图,该图阐述了运用扫描子系统进行扫描的时间作为通过图13中的变量所识别的数据类型的一个函数而变化的方式;图16是一个示范性流程的实施例示意图,该流程描述了该更新程序由一个用户界面启动的方式。图17是对一台移动通信设备的一个扫描子系统进行有效更新的方法的实施例示意图。具体实施方式图1是一个移动通信框架100的实施例示意图。如图所示,该框架包括移动通信设备102以及能够通过无线网络进行通信的后端服务器104。在当前描述的环境下,移动通信设备102可包括(但并不局限于)蜂窝式电话、无线个人数字助理(PDA)、无线掌上电脑、无线手提式电脑或任何其它能够通过无线网络进行通信的移动设备。在一个实施例中,移动通信设备102可配备一扫描子系统105。该扫描子系统105可包括任何能够储存于移动通信设备102或存放于所进行通信之中的扫描数据的子系统。当然,该扫描可以是访问式扫描、需求式扫描或者其他任何类型的扫描。此外,扫描可能牵涉到上述数据所代表的内容(即文本、图片等),以及对恶意软件进行的通用安全类型的扫描等等。仍旧回到图1,移动通信设备102可以进一步配备有一个能够描绘多个图形用户界面108的显示器106,此显示器经过改装以用于管理包括以上所述扫描功能在内的各种功能。使用时,移动通信设备102的显示器106用于在一个网络(如互联网等)上显示数据。请参见操作l。在当前的使用过程中,用户可以使用显示器106浏览各类网络上的数据,具体是通过后端服务器104选择链接或锚点以从网络上获取数据。请参见操作2。接着,在操作3中,扫描子系统105被调用以扫描所获取的数据。在当前的实施例中,扫描子系统105显示出已经找到与操作4中所获取数据有关的恶意软件。此时,通过显示器106向一位用户提供了一个选项,即中断此次获取和/或使用/访问该数据而忽略所识别出的恶意软件,如操作5所示。基于操作5中的决定,用户会或不会成为一次'攻击'的对象,如操作6所示。图2是基于另一个实施例的移动通信框架200的示意图。该移动通信框架200类似于图1所示的移动通信框架100,只是移动通信设备对所获取数据中恶意软件的识别作出反应的方式有所不同。具体地,操作5中仅提供给用户一个选项。g卩,用户只能关闭任何与被发现包含恶意软件的数据有关的对话。图3显示了基于一个实施例的与移动通信设备相关联的架构300。当前的架构300可以包含于图1和图2的移动通信设备。当然,架构300可在任何所需的场合执行。如图所示,当前的架构300可包括多个移动应用程序302。在当前描述的情况下,移动应用程序302可包括任何安装于移动通信设备中的应用程序或软件等,以利于开展不同的任务。还应该注意,该应用程序302也可以按用户的需要安装于固件、硬件等之中。在另一个实施例中,应用程序302可包括(但是并不限于)邮件应用程序,其任务包括管理电子邮件。此外,该应用程序可以包括浏览器应用程序,其任务包括浏览网络。另外,该应用程序还可以包括电话簿应用程序,其任务包括管理多个电话号码。作为一种选择,该应用程序可以包括消息应用程序,其任务包括消息通信。应该注意,该应用程序可为任何类行。例如,可以为Java应用程序或其他类似的程序。继续回到图3,通过第一个应用程序接口(API)306及第一个同扫描子系统304相关的函数库308,扫描子系统304与应用程序302进行通信。更多关于第一个应用程序接口306及第一个函数库308的可选择示范性信息将在下文讨论图4-12的时候作进一步阐述。作为一种选择,应用程序302可同扫描子系统304进行信息通信,以方便扫描子系统304的扫描工作。该信息可以同将要进行扫描的数据类型、及同此类扫描相关的时间安排有关。更多关于扫描子系统304同应用程序302以此种方式进行互动的示范性信息将在讨论图13-15的时候作进一步阐述。如图3所示,第一个函数库308可包括更新管理器310、配置管理器312、以及一个签名数据库314。在使用中,该更新管理器310可管理签名数据库314更新扫描用的最新签名的过程。在一个实施例中,更新的过程可以进行简化以适应移动通信框架固有的有限带宽的问题。更多的关于该更新过程的示范性信息将在讨论图16-17时进行阐述。作为图3中架构300的一个组成部分又进一步提供了操作系统316,该操作系统安装于移动通信设备上并经过改装以方便执行应用程序302。在一个实施例中,扫描子系统304可以独立于平台,因此能够在任何操作系统/移动通信设备组合中加以执行。为适应这个特性,安排了第二个应用程序接口318以及第二个函数库320,其能够支持多种功能,例如系统/函数库初始化322、出错函数336、内存分配334、输入/输出(I/O)328、数据授权332、同步330、高级文本传送协议326、设备信息324、调试338、以及其他功能(即共享内存、系统时间,等)。在一个实施例中,第二个应用程序接口318可以是独立于平台的,类似于扫描子系统304。更多关于第二个应用程序接口318及第二个函数库320的可选择示范性细节将在讨论附件A时作进一步阐述。图4显示了基于一个实施例的系统400,其通过使用一台移动通信设备以访问安全或内容分析功能。在一个范例中,当前的系统400可在图3之架构300中的应用程序、扫描子系统以及操作系统环境下执行。但是应该注意到,当前的系统400可在任何所需的环境下加以执行。如图所示,这里包括了能通过无线网络进行通信的安装于一移动通信设备的操作系统402。另外还提供了安装于移动通信设备的应用程序404,其通过使用操作系统402加以执行并完成各种任务。扫描子系统406通过一个应用程序接口及一个关联函数库(参见图3中的第一个应用程序接口306及第一个函数库308)保持与应用程序404进行通信。该扫描子系统406经过改装以访问安全或内容分析功能,以及应用程序404所进行的任务。在一个实施例中,安全或内容分析为安全分析。在另外一个实施例中,安全或内容分析为内容分析。另外,安全或内容分析可以包括按需式病毒扫描和/或存取式病毒扫描。在使用中,安全或内容分析功能可应用于与应用程序404所运行任务相关联的应用数据。在当前描述的环境下,应用数据可包括任何由应用程序404执行的任务所输入、处理、输出的数据或其他与之相关的数据。通过应用程序接口使扫描子系统406与应用程序404紧密联合,可以降低管理费用与代码重复率。更多关于该应用程序接口与相关函数库的示范性信息将在讨论此后的图表时作进一步阐述。8图5基于图4中系统400的应用服务器,显示了通过使用移动通信设备访问安全或内容分析功能的框架500。应该注意到当前的框架500可以在任何所需的环境中加以执行。如图所示,扫描子系统可包括扫描程序502,该扫描程序通过应用程序接口506以及一个关联的协议(例如ultron消息联络系统)与应用程序504进行通信。应用程序接口506会牵涉到一个与扫描程序502相关联的第一个组件508,以及与应用程序504相关联的第二个组件510,这会在下文中作进一步阐述。向应用程序接口506提供的多种不同的调用512可包括开放式的调用、数据调用、以及封闭式的调用。在使用中,扫描程序502可以扫描与应用程序504所运行的任务相关联的应用数据516。图6所示为一个通过使用移动通信设备用以访问安全或内容分析功能的框架600,该框架与图4中系统400的重复加载库实例相一致。应该注意,当前的框架600可以在任何所需的环境下加以执行。如图所示,扫描子系统可包括一个重复加载函数库602。在使用中,扫描子系统重复加载函数库602可在运行时连接于应用程序604。由此,应用程序接口606可以被植入多个应用程序604中的每一个之中。类似于先前图5中的框架500,应用程序接口606可能涉及多种不同的调用612,包括开放式的调用、数据调用、以及封闭式的调用。在使用中,重复加载函数库602可以用于扫描与应用程序604所运行的任务相关的应用数据616。图7所示为一个在图4中系统400环境下执行的按需式扫描系统700。应该注意,当前系统700可以在任何所需的环境下加以执行。按需式扫描对所储存应用数据702进行扫描,以侦测恶意内容或代码并在发现后将其除去。用户可以通过一个用户界面703来启动按需式扫描。此外,每个应用程序704可以调用扫描子系统706以运行针对储存于相应内存内对象进行的扫描。另一方面,按需式扫描在应用程序704处理或转换应用数据702之前提供了对恶意代码或内容的识别。在扫描子系统706侦测到恶意应用数据702之前,按需式扫描对于用户是透明的。图8基于一个实施例,显示了应用程序接口800的各种不同组件的层次体系,可用于在移动应用程序与一个扫描子系统之间提供接口。作为一种选择,当前的应用程序接口800可以在图4中系统400的环境下加以执行。但是应该注意到,当前的应用程序接口800可以在任何所需的环境下加以执行。如图8所示,应用程序接口的函数包括MdoScanOpen()802、MDoScanClose()804、MDoScanVersion()806、及MDoScanData()808。MoDoScanOpen()802和MDoScanClose()804是用于创建/打开并关闭一个扫描子系统对象实例。MDoScanVersion()806提供了扫描子系统及签名模式数据版本信息。MDoScanData()808运行内容/数据扫描及报告。同时包括在扫描应用程序接口中的有MDoScanUpdate()810,它能提供恶意软件签名数据库及侦测逻辑更新。当MDoScanUpdate()810由一次更新应用所调用时,函数库就会连接上一个远程后端服务器(参见例如图l)并下载最新的文件(例如mdo.sdb与mdo.pd)。扫描子系统配置是通过运用MDoConfigOpen()812、MDoConfigClose()814、MDoConfigGet()816以及MDoConfigSet()818所达成的。一旦一个配置句柄通过调用当前的应用程序接口800而获得,进行调用的应用程序使用get与set配置API以査询并设定扫描子系统配置的各种变量。同时包含于当前应用程序接口800的是一个称为MDoGetLastError()820的出错获取函数。该函数用于获取关于已发生的最后出错的信息。在作出任何API调用之前,最好是在启动时间,MDoSystemlnit()825被调用以初始化函数库环境设置。该函数库保存了配置设置、恶意软件代码侦测逻辑(如mdo.pd)与签名数据库(如mdo.sdb)、及各种内部变量(如同步对象,等),并将其存放于固定的持续性储存地点。MDoLibraryOpen()830和MDoLibraryClose()840用于初始化函数库。一个应用程序可以在任何其它的API调用发生之前调用MDoLibraryOpen()830,而且应用程序可以在终止之前调用MDoLibraryClose()840。应用程序接口800可以通过使用不同的应用程序接口组件从而能够支持各种不同的功能,例如系统环境初始化、版本状态信息获取、更新扫描子系统、扫描、配置扫描子系统,等。更多关于在应用程序接口800环境下上述功能的信息将在下文进行阐述。系统初始化MDoSystemlnit()825针对保存于特定永久储存域的数据进行验证与环境初始化工作。一个恶意代码/内容签名模式的数据库(即rado.sdb)、侦测逻辑(即rodo.pd)、配置设置、以及同步对象可以储存于这些存储域中。MDoSystemlnit()825可以在API函数中的任一函数被执行之前被调用一次(即在启动时)。表ttl说明了关于MDoSystemlnit()825的示范性信息。说明书第8/61页表#1MDoSystemlnit描述核实并初始化系统环境信息原型intMDoSystemlnit(void);参数无返回值如成功则0,否则为非零出错代码。函数库接口API应用程序接口800包括多个函数库接口组件。API接口实例化可以通过使用MDoLibraryOpen()830来达成。使用该函数而获得的实例化函数库接口句柄可以用于其后的API调用。在该应用程序终结之前,MDoLibraryClose()840可以被调用以释放该句柄。图9说明了通过使用MDoLibraryOpen()830及MDoLibraryClose()840的一个示范性函数库接口初始化过程900。表ft2说明了关于MDoLibraryOpen()830的示范性信息。表#2MDoLibraryOpen描述初始化并返回一个API函数库界面句柄原型MDOLIB—HANDLEMDoLibraryOpen(void);参数无返回值如成功,则返回函数库界面句柄,否则为INVALID—MD0LIB_HANDLE。也可参见MDoLibraryClose0表#3说明了关于MDoLibraryClose()840的示范性信息。表#3MDoLibraryClose描述释放由MDoLibraryClose()函数返回的与一个API函数库句柄相关联的系统资源原型voidMDoLibraryClose(MDOLIB—HANDLEhLib);参数hLib[in]由MDoLibraryOpen返回的函数库句柄返回值无也可参见MDoLibraryOpen()出错获取一旦函数库已经成功地由MDoLibraryOpen()830初始化并实例化,MDoGetLastError()820向应用程序提供关于最近一次发生出错的信息。表#4说明了关于MDoGetLastError()820的示范性信息。表糾MDoGetLastError描述返回指定的函数库实例的最后一次出错值原型MDoErrorCodeMDoGetLastError(MDOLIB_HANDLEhLib);参数hLib[in]由MDoLibraryOpen返回的函数库句柄返回值MDoErrorCode数据类型可以被定义为一个32位的无符号整数,它既包含组件又包含出错代码。通常,获取的出错信息可能被设定在平台抽象API层。有鉴于此,此处所给的MDoErrorCode格式类似于由抽象层API所定义的AlErrorCode格式(参见附件A)。图10基于一个实施例说明了一个MDoErrorCode的示范性格式1000。表#5说明了关于MDoGetLastError()820的示范性信息。表站MDoErrorCode被定义为typedefunsignedlongMDoErrorCode;也可参见MDoLibraryOpen0,MDoScan0pen0,MDoScanData0,MDoScanUpdate0示范性计算机代码ftl通过调用一次MDoGetLastError()820说明了一个样本函数库的调用次序。计算机代码W<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>出错代码一个由MDoGetLastError820报告的出错代码包括两个部分组件代码与出错代码。请参见附件A以获得更多信息。表恥列出了示范性出错代码及相应的组件代码。MDoGetLastError820也返回设定于抽象函数库层的出错代码。应该注意,以下的列表仅仅出于说明的目的,不应该将其理解为在任何方式上具有限制性。表<table>tableseeoriginaldocumentpage14</column></row><table>MLE—PKG—INVALIDFILE无效更新包文件MLE—PKG—INVALID—FORMAT无效更新包文件格式MLE—SDB—INVALID—POSITION无效SDB记录位置MLE—SDB—INVALID—STRUCTURE无效/损毁SDB记录结构MLE—SDB—RECORD—NOT—FOUNDSDB记录失踪。无法找到记录MLE—SDB一NO—INODESSDBINode空间不够ML—ERROR—MODULEMLE—SDB—NO—BLOCKSSDB块空间不够MLE—SDB—INVALID—OFFSET—SIZE无效SDB偏移MLE—SDB—BAD—INITIALIZEPARAMS无效SDB初始化参数MLE_ME—INVALID—SUBTYPE无效次级记录ID值MLE—ME—INVALID—TYPE无效次级记录ID值MLE—ME—TYPE—丽一FOUND未知次级记录ID值MLE—ME—VIRUS—NOT—FOUND失踪/无效病毒代码MLE—DBU—INVALID—COMMAND无效SDB更新命令MLE—ME_SMALL—VREC—ARRAY病毒记录阵列大小不佳MLE一ME一TOO一MANY一WVSELECT一BUCK未能添加新的SDB记录ETSMLE—ME—BACKPTR—OVERFLOW未能更新SDB记录扫描子系统API应用程序接口800包括多个扫描子系统组件。扫描子系统API组件提供了数据/内容扫描及签名更新服务。其中包括MDoScanOpen()802、MDoScanClose()804、MDoScanVersion()806、MDoScanUpdate()810、及MDoScanData()808。MDoScanOpen()802用于扫描子系统对象实例化。MDoScanVersion()806提供扫描子系统及签名数据库版本信息。MDoScanUpdateO810运行签名数据库更新。MDoScanData()808运行恶意代码/内容数据扫描。图ll基于一个实施例说明了扫描子系统API调用次序IIOO。MdoScanOpen表#7说明了关于MDoScanOpen()802的示范性信息。表tt7描述返回一个扫描子系统实例句柄原型MDOSCAN—HANDLEMDoScan0pen(MD0LIB—HANDLEhLib)参数hLib[in]通过使用MDoLibraryOpen()函数而获得的函数库句柄返回值如成功,则返回扫描子系统实例句柄。如出错,则为INVALID—MDOSCAN—HANDLE。也可参见MDoScanClose(),MDoScanData(),MDoScanUpdate(),MDoLibraryOpen()MdoScanClose表能说明了关于MDoScanClose()804的示范性信息。表能描述释放扫描子系统实例及相关联的系统资源原型voidMDoScanClose(MD0SCAN一画DLEhScan);参数hSca_n[in]通过使用MDoScan0pen()函数而获得的扫描子系统句柄.返回值无也可参见MDoScan0pen0,MDoSc肌Data0,MDoScanUpdate()16MdoScanVersion表的说明了关于MdoScanVersion()806的示范性信息。表的描述从由MDoScanOpen()函数返回的一个扫描器句柄获得扫描子系统及签名版本信息原型intMDoScanVersion(MDOSCAN—HANDLEhScan,SVerlnfo木pVersion):参数hSc肌[in]通过使用MDoScanOpen()函数而获得的扫描子系统句柄。pVersion[out]指向一个包含版本信息结构的指针返回值如成功则返回0,否则为-1。也可参见MDoScanOpen(),MDoScanClose(),MDoScanData0,MDoScanUpdate0示范性计算机代码#2说明一个样本版本信息结构。计算机代码#2/*版本信息由以下组成〈deviceid〉+〈MDo〉+〈PD>+〈SDB〉例如deviceid:-MDo:1mdo.pd:2mdo.sdb:32*/"Win32TestPlatformRev05〃<table>tableseeoriginaldocumentpage18</column></row><table>由MdoScanVersion()806所报告的移动通信设备识别字符串是通过由AlDevGetlnfo所返回的使用设备识别字符串而设定的(参见附件A)。MdoScanData表#10说明了关于MDoScanData()808的示范性信息。表#10描述MDoScanData将从一个应用程序被调用以扫描一个特定的数据类型。调用应用程序指定了扫描的动作、扫描目标类型、一套用以访问数据的1/0函数、以及一个可选性回调函数。数据扫描的结果以一个调用函数提供的数据结构被返回。MDoScanData是重复加载的。原型intMDoScanData(MDOSCAN—HANDLEhScan,SScsnPsrsm*pParam,SScanResult*pResult);参数hScan[in]从一次调用MDoScanOpen()函数而获得的扫描子系统句柄pPaxam[in]指向一个包含数据扫描参数的结构的指针pResult[out]指向一个包含数据扫描结果的结构的指针返回值如成功则返回0,否则为-1而且出错代码被设定也可参考MDoScanOpen0,MDoScanClose(),MDoScanVersion(),MDoScanUpdate0MdoScanUpdate表W1说明了关于MDoScanUpdate()810的示范性信息。表ttll描述运行恶意代码/内容签名模式数据库(mdo.sdb)及侦测逻辑(mdo.pd)更新。原型intMDoScanUpdate(MD0SCAN一HANDLEhScan,SUpdateParanpi1pParam);参数hScan[in]通过使用MDoScan0pen()函数而获得的扫描句柄pParam[in]指向一个更新参数结构的指针,该结构包含一个用于更新取消/放弃及进程状态更新的回调函数指针示范性计算机代码#3说明了更新参数结构被定义的方式计算机代码#3typedefstructSStatusstructintiCurrent;intiTotal;}SStatus;typedefstructSUpdateParam—structvoid氺pPrivate;int(氺pfCallBack)(void氺pPrivate,intiReason,void}SUpdateParam;调用应用程序可以在调用函数的时候设定函数指针及将要传递给函数的数据。请注意表W2。表#12回调原因(iReason)描述MDOJJCB—STATUS执行回调以报告更新的状态。pParam指向SStatus结构。SStatus.iCurrent包含所收到数据的量,而iTotal以字节为单位报告全部更新数据的大小。MDO一UCB一CANCEL执行回调以判明是否更新取消被设定。pParam指向NULL。配置API应用程序接口800包括多个配置组件。包括一套用于获取并指定扫描子系统设定的函数。这些函数的一个目标是向应用程序及扫描子系统提供集中型的运行时间配置访问。其配置数据储存于非易失性永续型数据储存体(如闪存,等)。图12基于一个实施例说明了一个示范性配置API调用次序1200。如图所示,MDoConfigOpen()830返回一个句柄,该句柄将被传递到配置获取及指定的函数。MDoConfigClose()814被用于释放并关闭由MDoConfigOpen()812返回的配置句柄。MDoConfigSet()818用一个特定值设定了一个特定的配置变量,且MDoConfigGet()816为一个指定的变量返回一个配置值。在MDoConfigClose()814被调用前,由MDoConfSet()818所限定的配置变量设定并不一定被存放于永久储存体。当存取和/或指定一个变量值的时候,应用程序可以调用配置打开、获取或设定,并立刻在其后添加关闭函数。使用应用程序接口800配置组件而指定/获取的配置变量与值可以用以无效字符('V)')结尾的8位字符的字符串来代表。表ttl3列出了现有的各种配置变量。表#13<table>tableseeoriginaldocumentpage21</column></row><table>表#14说明了关于MDoConfigOpen()812的示范性信息。表#14描述返回一个句柄到一个配置设定,然后将其传递给后面的调用MDoConfigGet()和MDoConfigSet().原型MDOCONFIG—HANDLEMDoConfigOpen(MDOLIB_HANDLEhLib);参数hLib[in]通过使用MDoLibraryOpen()函数获得的函数库句柄返回值如成功则返回配置句柄。如出错则返回INVALID—MD0C0NPIG_HANDLE。也可参见MDoGonfigGloseO,MDoGonfigSet0,MDoConfigGet0MdoConfigClose表#15说明了关于MDoConfigClose()814的示范性信息。表#15描述释放系统资源并关闭配置句柄原型voidMDoConfigClose(MDOCONFIG—HANDLEhConfig);参数hConfig[in]由MDoConfigOpenO函数返回的配置句柄返回值无也可参见MDoConfigOpenO,MDoConfigSet(),MDoConfigGet()MdoConfigGet表#16说明了关于MDoConfigGet()816的示范性信息。表謹描述为指定的配置变量获得一个配置值原型intMDoConfigGet(MDOCONFIG—HANDLEhConfigcharconst承pszN柳e,char本pBuffer,unsignedintuSize);参数hConfig[in]由MDoConfigOpen()函数返回的配置句柄pszName[in]以NULL-终止的配置变量名称pBuffer[out]配合所指定变量的以NULL-终止的配置设定/值uSize[in]以字节计算的pBuffer长度返回值成功则返回O,否则为-1。也可参见MDoConfigOpen(),MDoConfigClose(),MDoConfigSet()MdoConfigSet表ftl7说明了关于MDoConfigSet()818的示范性信息。表#17描述为指定的配置变量设定一个值原型intMDoConfigGet(MD0C0NFIG—HANDLEhConfigcharconst*pszName,charconst水pszValue);参数hConfig[in]由MDoCcmfig0pen()函数所返回的配置句柄pszName[in]以NULL-终结的配置变量名称pszValue[int]配合所指定变量的以NULL-终结的新的配置设定/值返回值如成功则返回0,否则为-i也可参见MDoGonfigOpenO,MDoGonfigGloseO,MDoGonfigGetO23为便于扫描的应用程序/扫描子系统通信如前所述,应用程序可与扫描子系统进行信息通信以方便扫描子系统进行扫描。这一通信可通过上面所描述的API得到便利。上述的信息可与被扫描的数据类型及与此类扫描相关联的时间安排有关。更多关于上述API达成此结果方式的描述将在下文作阐述。扫描参数(SscanParam)调用应用程序可以通过使用SScanParam结构向扫描子系统提供一个扫描参数。包含于扫描参数的信息向扫描子系统提供1)扫描子系统的动作类型(例如iAction),2)扫描数据类型(例如需要扫描的应用数据的类型-iDataType),3)指向扫描目标的数据指针(例如pPrivate),4)获取数据大小(以字节为单位)的函数(例如pfGetSize),5)重置扫描数据大小的函数(例如pfSetSize),6)扫描子系统用于获取一个扫描数据块的函数(例如pfRead),6)用于向扫描数据写入的函数(例如pfWrite),以及7)扫描子系统状态/进程报告的回调函数(例如pfCallBack)。示范性计算机代码#4说明了一个数据扫描参数的结构。计算机代码糾<table>tableseeoriginaldocumentpage24</column></row><table>unsignedint(*pfRead)(void氺pPrivate,unsignedintuOffset,void木pBuffer,unsignedintuCount);unsignedintpfWrite)(void*pPrivate,unsignedintuOffset,voidconst氺pBuffer,unsignedintuCount);int(承pfCallBack)(void氺pPrivate,intiReason,SCBArgconst*pCBArg);}SSCanParam;扫描动作(iAction)扫描动作指定了在被提供的应用数据上要运行的扫描的类型。表ttl8说明了各种不同的示范性扫描动作。表ttl8扫描动作ID描述MDO—SA—SCAN—ONLY扫描子系统运行扫描并报告发现的恶意代码。不进行任何修复。MD0—SA_SCAN—REPAIR在运行扫描之后,包含恶意代码的对象将被修复。扫描数据类型(iDataType)调用应用程序可以通过使用这一变量向扫描子系统通知应用数据类型以及格式。图13说明了各种不同的示范性应用数据类型1300,应用程序能够将其通过API向扫描子系统进行传送。Ur卜字符串的格式可以符合统一资源定位器(RFC1738)规格。符合互联网电子邮件地址格式(RFC822)规格。缺省的域可以设置为任何所需的域。另外,电话号码字符串可以包括数字字符'0'至'9',以及'tt'与'*'字符。扫描数据指针/句柄(pPrivate)另外会提供一个指向一个应用扫描对象的指针(或句柄)。扫描子系统并不一定使用该数据指针/句柄运行直接的内存I/O。数据指针/句柄被传递回调用函数以通过使用调用函数所指定的I/O函数进行读/写。扫描数据大小(pfGetSize)当前的函数由扫描子系统用于从调用应用程序处获得扫描目标数据的大小(以字节为单位)。扫描数据调整大小(pfSetSize)该函数由扫描子系统用于请求调用应用程序调整被修复/清洗的应用数据至一个给定的大小(以字节为单位)。这一函数可以与扫描并修复/删除选项同时使用。扫描数据读取函数(。fRead)该即时函数可由扫描子系统使用,用于从调用应用程序读取一个指定量的应用数据。扫描数据写入函数(pfWrite)这是一个可选的参数,可由扫描子系统使用,用于向扫描对象写入一个指定量的应用数据以作为修复过程的一部分。如扫描动作被设定为修复或删除,则这个函数指针可以进行设定。回调函数(pfCallBack)如被指定,扫描子系统通过以下表格内所描述的信息调用该指定函数。如果返回的是一个负返回值,则回调函数放弃扫描过程。表W9阐述了一个示范性的回调代码列表。26表■回调原因ID描述MDO—CB—DETECTED向调用应用程序通知在扫描对象中已经侦测到一个恶意代码。回调数据参数'arg'被设定为指向SCBArg结构。MD0—CB_CLEAN—READY向调用应用程序通知被识别的恶意软件可以被清除/修复。回调数据参数'varg'被设定为指向SCBArg结构。示范性的计算机代码tt5说明了一个扫描子系统的回调结构。计算机代码#5typedefstructSCBArg一structtext—tconst*pszName;/*被侦测恶意软件的名称*/text—tconst*pszVariant;/*被侦测恶意软《牛的变量名VunsignedintuType;/*恶意软件类型*/}SCBArg;扫描结果(SScanResulf)对象扫描的结果,即被侦测到的恶意软件信息,包含于由调用应用程序所提供的SScanResult结构被返回至调用应用程序。该SScanResult结构包含一个指向一个包含扫描结果信息结构的指针,以及一个指向一个被用于移除扫描结果资源函数的指针。用于存放扫描结果的内存由扫描子系统进行分配,并由调用pfDeleteResult指针所指向的函数所释放。示范性计算机代码恥说明了一个样本调用次序。计算机代码恥<table>tableseeoriginaldocumentpage28</column></row><table>示范性计算机代码#7说明了一个被侦测到的恶意代码/内容信息结构(计算机代码#7<table>tableseeoriginaldocumentpage28</column></row><table><table>tableseeoriginaldocumentpage29</column></row><table>示范性计算机代码#8说明了一个扫描结果结构。计算机代码#8<table>tableseeoriginaldocumentpage29</column></row><table>严重性等级与行为级别(uBehavior)图14基于一个示范性实施例,它表明了包括在SDetect结构内的含有恶意软件严重度标志及应用程序行为级别的位-域变量1400。表#20阐述了一个示范性恶意软件的严重性级别列表。表#20<table>tableseeoriginaldocumentpage30</column></row><table>如被扫描过的应用数据包含对移动通信设备用户有害的恶意软件,则扫描子系统设定MDO—SC—USER标志。如果对移动通信设备本身有害,MDO—SC—TERMINAL标志被设定。如果其对用户和移动通信设备都有害,则MDO_SC—USER与MDO—SC—TERMINAL标志都被设定。应用程序行为级别指定了对侦测到包含恶意软件的应用数据采取什么样的措施。表#21列出了行为级别的各种值及应用程序采取的相应行动。表#21<table>tableseeoriginaldocumentpage30</column></row><table>当在被扫描的数据中发现多个恶意代码,调用应用程序预期将以最高级别的行为级别来做出反应。例如,如果MDO—BC丄EVELO和MD0—BC_LEVEL3都被报告,应用程序可以采取MDO—BC—LEVEL3的行动。图15说明了一个图表1500,阐明了扫描子系统的扫描时机安排作为通过图13的各变量被识别出数据类型的一个函数而变动的方式。签名数据库更新如前所述,更新过程可被简化,以适应移动通信框架固有的有限带宽。更多关于可达成如此效果的各种不同方式将在下文作阐述。被更新的组件MDoScanUpdate函数随着更新服务提供了两个组件[例如恶意代码侦测逻辑(mdo.pd)与签名数据库(mdo.sdb)]。一个组件(例如mdo,pd)可包含侦测逻辑并在一个更新的版本出现时被完全更新。另一个组件(例如mdo.sdb)可以逐步更新直到/7个先前的版本。对第二个组件的一次完全更新可在具有比/7更早版本的移动通信设备上运行。例如,如果"被设定为5,而最新版本是20,那么会在一个比15更早版本的移动通信设备上进行一次完整的更新。通过用户界面激活图16说明了一个基于一个实施例的示范性的流程1600,它描述了由一个用户界面启动的更新方式。如图所示,病毒码的更新可以由移动通信设备用户通过一个用户界面1602选择一个菜单输入来启动。一旦用户选择了该更新菜单,一个更新应用程序1604被激活,并通过适当的更新界面函数1606连接到一台后端服务器。通信协议更新函数库可以通过HTTP协议与后端服务器进行通信。更新过程图17基于一个实施例,它说明了用于有效地更新一台移动通信设备的一个扫描子系统的一个方法1700。在一个实施例中,当前的方法1700可以在图3的架构300中的应用程序、扫描子系统与操作系统、以及图1和2中的系统中执行。但是应该注意,当前的方法1700可以在任何所需的环境中加以执行。要初始化该过程,可以从至少一台移动通信设备向一台后端服务器发送一次更新请求。当然,在其他的实例中,更新可以不经过请求而发送。在一个实施例中,更新可以由移动通信设备通过使用一个请求数据结构而进行请求。此数据结构还可以选择性地包括统一资源定位器(URL)变量、移动通信识别变量、应用程序接口版本变量、侦测逻辑变量、签名版本变量、和/或部分号码变量等变量。表#22说明了可以用于此目的的一个示范性的URL。表#22<BASE-URL>dev=<DEV-ID〉&mdo=<MD0-VER〉&eng=<ENG-VER>&sdb=<SDB-VER>&chk=<CHUNK>以下是一个描述上述URL变量的表格变量描述〈BASE-URL〉更新通过使用MDoConfigGet函数而获得的服务器URL(参见0部分)<DEV-ID〉移动通信设备识别码;由AlDevGetlnfo函数返回〈MD0-VER〉MDoAPI版本〈ENG-VER〉侦测逻辑,mdo.pd,版本<SDB-VER〉签名数据库,mdo.sdb,版本〈CHUNK〉更新软件包块,或部分、号码;最初为1(=1)表#23说明了一个符合上述描述的URL的一个特定范例。表It23http://update,mcafeeacsa.com/504idev=X504i05&mdo=2&eng=3&sdb=56&chk=l以上表#23的URL指定了基本-URL"http://update.mcafeeacsa.com/504i","X504i05"为设备识别码,API版本2,恶意代码侦测逻辑版本3,以及签名数据库版本56。应该注意,当移动通信设备最初联络后端服务器的时候,其"数据块"或部分、号码可以设定为1。此外,基本-URL可以通过让MDoConfigGetAPI使用"UpdateURL〃配置变量而获得。在收到请求之后,后端服务器通过将已储存的恶意代码侦测逻辑及签名数据库版本同在URL中编码存放的版本信息相比较,从而决定哪个更新包需要被下载。如果不需要进行更新,后端会返回一个无内容的回应。在操作1701中,移动通信设备收到了作为第一部分的回应。如果决定第一部分包括上述的无内容回应(参见决定1702),方法1700被中止,这是因为没有更新需要下载。该特征对适应移动通信框架中固有的有限带宽是有益的。另一方面,如果一个更新包的第一个部分被返回,方法1700将在收到更新的第一部分之后(或者有可能的是与之同时)继续接收更新的其它部分。请注意操作1704-1708。应该注意第一部分可伴随着整包的大小及部分的计数信息。在下载剩余的更新部分时,可以对所下载URL的部分号码作限定。表#24说明了一个指定部分号码"3"的URL的特定范例。表tt24http://update,mcafeeacsa.com/504idev=X504i05&mdo=2&eng=3&sdb=56&chk=3在一个实施例中,可以决定更新的完整性。相应地,在是否被核实了更新的完整性的基础上,可以有条件地将更新安装于扫描子系统中。作为一种选择,更新的完整性可以通过使用一个签名来确定。此签名可以同更新的一个部分一起接收(即一个最后部分)。之后,可以将该签名同使用更新的每个部分生成的另一签名进行比对。请注意操作1710。在一个实施例中,签名可以通过一个RSA私钥生成并在移动通信设备上使用一个包含于更新内的相应公钥进行认证。签名核实及生成可通过使用一个特定的认证函数库作进一步运行。假设完整性被核实,任何由扫描子系统运行的扫描会被停顿或中止。请注意操作1712。应该注意该停顿是可选择的。接下来,可将更新安装于扫描子系统。请注意操作1714。在实例中任何扫描被停顿的地方,一旦更新被安装于扫描子系统,之后可以继续使用扫描子系统进行扫描。参见操作1716。为适应移动通信框架中固有的有限带宽,更新的某些部分的大小可以最小化。此外,可以对更新的部分进行压縮。在另一个实施例中,可将每个更新部分的格式设计为能够适应移动通信框架中固有的有限带宽。更多关于此类格式的信息将在下文作阐述。表#25说明了一个下载更新各部分的示范性格式。33表#25<table>tableseeoriginaldocumentpage34</column></row><table>表tt28说明了一个示范性的更新包。表#28MPKGX-ContentUngth:6423\r\nX-ContentName:update30_32\r\nX-Name:sdb\r\nX-Version:32\r\n\r\n<SDBupdatebinary:6423〉〈signature:sig-len><sig_len:4>抽象函数库API如前所述,提供了一个独立于平台的系统及相关的方法以用于一台移动通信设备。其包括一独立于平台的扫描子系统,可同用于扫描的移动通信设备的操作系统进行通信。另外还提供了一个独立于平台的应用程序接口,为操作系统及扫描子系统之间提供界面帮助。独立于平台的应用程序接口包括了一个抽象函数库,用于将独立于平台的扫描子系统接驳于移动通信设备及相关联的操作系统。通过该设计,扫描子系统可以独立于平台,并由此能在任何类型的操作系统/移动通信设备的组合上加以执行。在一个实施例中,抽象函数库可以支持系统初始化、函数库初始化、出错函数、内存分配、输入/输出(1/0)、数据认证、同步、超文本传输协议、共享内存、系统时间、设备信息、以及调试。更多关于上述应用程序接口的一个可选择实例的示范性信息将在附件A中进行阐述。虽然上文描述了不同的实施例,但容易理解,它们仅通过范例的形式被提出,而不具有限制性。因此,某个特定实例的应用广度与范围不应该由任何以上所描述的示范性实例所限制,而应只根据权利要求及与其有同等效果的陈述所确定。附件A当前的应用程序接口(API)包括以下子系统系统初始化函数库初始化出错函数堆内存分配永续性内存/储存体I/O数据认证同步对象(信标)HTTPAPI共享内存系统时间设备信息调试本附件中还描述了一套定义于抽象函数库(AL)层的C-语言定义,供在API函数库中使用。系统初始化依赖于平台/系统的启动初始化是由AlLibrarySysInit()函数运行的。该函数的设计使其能从先前描述过的MDoSystemlnit()函数被调用。AlLibrarySysInit描述运行依赖于系统的初始化原型intAlUbrarySysInit(void);参数无返回值成功则返回0,否则为-l。平台抽象API函数库通过使用AlInitLibrary()函数被初始化。在一个抽象API函数被调用之前,抽象函数库就被初始化一次。当AlCleanupLibrary()函数被调用时,由AlInitLibrary()获得并初始化的系统资源被释放。AlInitLibrary描述运行函数库初始化。该函数将由MDoLibraryOpen()函数调用。原型intAlInitLibrary(void);参数无返回值成功则返回0,否则为-1。AlCleanupLibrary描述释放由AlInitLibrary()函数获得的系统资源。该函数将由先前指定的MDoLibraryClose()函数调用。原型voidAlCleanupLibrary(void);参数无返回值无出错函数AL函数库包含了一套出错函数,该套函数用于设定并获取有关特定任务/线程的出错代码。抽象层实现者应负责设定适当的出错代码及组件代码。AlGetLastError描述返回调用任务/线程的最后出错代码值。函数通过使用AlSetLastErrorO函数设定返回的值。AlErrorCode数据类型是使用一个32-位无符号值进行内部表达的数据类型。原型AlErrorCodeAlGetLastError(void);参数无返回值调用线程/任务的最后出错值设定是通过使用AlSetLastError()函数完成的AlSetLastError描述为调用线程/任务设定最后出错代码原型voidAlSetLastError(AlEirorCodeerrorCode);参数errorCode[in]32-位出错代码值返回值无出错/状态代码组件出错代码值代码值描述N/A00hALE—SUCCESS0000h成功;非出错N/A00hALE—CANCELLED000lh操作取消;非出错AL—SYS—MODULEOlhALE—BAD—FILE—MODE2711h无效的文件模式ALE—FILE—OPEN2712h打开失败ALE—FILE—WRITE2713h向文件写入失败ALE—BAD—SEEK—MODE2714h无效的寻找模式ALE一SEEK一OOB2715h无效的寻找地址39<table>tableseeoriginaldocumentpage40</column></row><table>Fh)ALE—DA—CERT—UNSUPPORTED2102h证书不受支持ALE—DAJERT一,KE2103h证书被取消ALE—DA—CERT—EXPIRED2104h证书过期ALE—DA—SCA—CERT—EXPIRED2105h次CA证书过期ALEDARCACERT2106h根CA证书过期EXPIREDALE—DA—RCA—CERT—DISABLED2107h根CA证书失效ALE—DAJ2ERTJNKN0WN2108h未知证书ALE—DA—DATA—ALTERED2109h数据被更改上述的表格列出了一套AL组件及出错代码。一个使用AlSetLastError函数报告的出错是一个由组件代码与出错代码组合而形成的32-位的值。设定在AL层次的出错通过使用MDoGetLastError函数而获取,以方便在出错发生时采取适当的行动。堆内存分配抽象层提供了一个堆内存分配API,以方便一个调用应用程序(例如"调用函数")来动态地分配所需的内存。被分配的内存被假设为可在全局范围内共享,即可以由多个应用/任务所存取。AlMeraAlloc()与AlMemFree()API函数提供了堆内存的分配与取消分配。函数描述void*AlMemAlloc(unsignedintuSize)分配一块动态内存voidAlMemFree(void承ptr)使用AlMemAlloc释放被分配的内存AlMemAlloc描述分配一个指定量的动态内存并向该内存返回一个指针。被分配的内存块可直接由调用函数(即调用应用程序)所存取,而不需要一个特别的操作(即内存锁定)。原型void*AlMemAlloc(unsignedintuSize);参数uSize[in]以字节计算的需分配内存的量返回值一个指向被分配内存的指针。如请求失败或请求大小为零则返回NULL。也可参见AlMemFree()AlMemFree描述释放由AlMemAlloc()函数返回的动态内存块原型voidAlMeraFree(void*pData);参数[in]指向一个需释放内存块的指针返回值也可参见AlMemAlloc()永续性储存体I/O永续性储存体(例如闪存)存取是通过使用一个文件1/0API进行的。参见下文:名称描述AL—FILE一画DLEAlFileOpen(charconst氺pszFilename,intiMode)打开,如有必要则创建,特定的文件并返回其句柄voidAlFileClose(AL_FILE—HANDLEJiFile)关闭由AlFileOpen()返回的文件句柄unsignedintAlFileSeek(AL一FILE—HANDLE—hFile)重新定位文件偏移量UnsignedintAlFileResd(AL—FILE—HANDLEhFile,void*pBuffer,unsignedintuSize)从一个文件句柄读取unsignedintAlFileWrite(AL一FILE一画DLEhFile,voidconst氺pBuffer,unsignedintuSize)向一个文件句柄写入intAlFileSetSize(AL—FILE—HANDLEhFile,unsignedintuSize)调整文件大小intAlFileStat(charconst氺pszFilename,ALStatBuf承pStat)获得文件信息文件句柄类型AL一FILE—HANDLE被定义为typedefstructAL—FILE—HANDLE—struct}承AL一F化E—HA亂E;而一个用来指定一个无效的永续性储存体句柄INVALID_AL_FILE—HANDLE的常量被定义为^defineINVALID—AL—FILE—HANDLE((AL—FILE—HANDLE)0)文件状态缓冲区类型AlStatBuf被定义为typedefstructAlStatBuf—structunsignedlongulsize;unsignedlongulTime;}AlStatBuf;AlFileOpen描述打开指定的文件并返回其句柄。原型AL—FILE—HANDLEAlFileOpen(constchar*pszFilename,intiMode);参数pszFilename[in]文件名/路径字符串iMode[in]文件存取模式ALJPEN—READ打开文件供读取ALJ)PEN—WRITE打开文件供读取与写入返回值如成功则返回文件句柄,否则为INVALID—AL—FILE—HANDLE。也可参见AlFileClose(),AlFileRead(),AlFileWrite()AlFileClose描述关闭并释放与特定文件句柄相关联的系统资源原型voidAlFileClose(AL—FILE—HANDLEhFile);参数hFile[in]由AlFileOpen()返回的文件句柄返回值无也可参见AlFileOpen(),AlFileRead(),AlFileWrite()AlFileSeek描述重新定位读/写文件偏移量原型longAlFileSeek(AL—FILE—HANDLEhFile,longlOffset,intiWhence);参数hFile[in]—个打开文件句柄lOffset[in]与iWhence指示符有关的文件偏移量iWhence[in]初始位置。可能的值有AL—SEEK—SET偏移量参数指定绝对文件偏移量。换言之,自文件开始处的偏移量。MJ_SEEK—CUR指定相对偏移量-偏移量参数从当前文件偏移量指定文件偏移量。AL—SEEK—END从文件末尾指定文件偏移量。返回值如成功则返回文件偏移量,否则为-1L也可参见AlFileOpen(),AlFileClose(),AlFileRead(),AlFileWrite()AlFileRead描述从一个文件读取一块数据原型unsignedintAlFileRead(AL—FILE—HANDLEhFile,void氺pBuffer,unsignedintuSize);参数hFile[in]—个打开文件句柄pBuffer[out]数据缓冲区uSize[out]需读取数据的量返回值如成功则返回读取的字节数,否则为-1也可参见AlFileOpen0,AlFileClose(),AlFileSeek(),AlFileWrite0AlFileWrite描述向一个文件写入一块数据原型unsignedintAlFileWrite(AL—FILE—HANDLEhFile,voidconst氺pBuffer,unsignedintuSize);参数hFile[in]—打开文件句柄pBuffer[int]存有需写入数据的缓冲区uSize[out]需写入数据的量返回值如成功则返回写入数据的量,否则为-1也可参见AlFileOpen(),AlFileClose(),AlFileSeek(),AlFileRead()AlFileSetSize描述调整打开文件大小。对于不支持本地文件调整大小的平台,抽象函数库在AlFileClose()函数被调用时通过限定储存在每个文件开始处的大小信息执行该功能。原型unsignedintAlFileSetSize(AL—FILE—HANDLEhFile,unsignedintuSize):参数hFile[in]引用一个带有写入模式的打开文件的句柄uSize[out]以字节计算的新文件的长度返回值如成功则返回0,否则为-1也可参见AlFileStat()AlFileStat描述获取文件大小及创建时间戳。对于不提供本地文件大小和/或时间戳信息获取方法的平台,抽象函数库通过在每个文件的开始处储存信息执行本函数。原型intAlFileStat(charconst氺pszFilename,AlStatBuf*pStat);参数pszFilename[in]获取信息的文件名称pStat[OUt]指向一个用于返回大小与时间戳信息结构的指针。该结构包含以下域typedefstructAlStatBufstruct49unsignedlongulSize;/*以字节计算的大小*/unsignedlongulTime;/*创建时间*/}AlStatBuf;返回值如成功则返回0,否则为-l数据认证平台抽象API包括一套用于认证数据的函数。数据认证API用于认证所下载的恶意软件的签字数据库。一旦调用函数通过使用AlDaOpen函数获得了一个认证对象,会对AlDaVerify作出一次调用,以核实所提供的数据。AlDaGetSignerlnfo()用于获取一个签字者信息。AlDaCloseO用于关闭并释放数据认证句柄及相关的系统资源。以下是一个示范性的数据认证API函数描述AL一DA一應DLEAlDaOpen(constvoid氺pSig,unsignedintuSigSize)从一个给出的签名/证书中获得数据认证句柄voidAlDaClose(AL—DA—HANDLEhHandle)关闭通过使用AlDaOpen()获得的数据认证句柄AlDaVerify(AL—DA—HANDLE固,int(氺pfRead)(voidvoid,int),void水pPrivate)数据认证函数。调用函数通过回调函数提供一个数据获取方法intAlDaGetSignerlnfo(AL—DA_HANDLEhDA,DaSignerlnfo*pDSI)获取签名者信息由AlDaOpen0函数返回的数据认证句柄被定义为ALHANDLE(AL—DA—HANDLE);HdefineINVALID—AL—DA—HANDLE((AL—DA一HANDLE)0)签名者信息结构被定义为lldefineMAX—DA—SIGNER_NAME128typedefstructDaSignerlrvfo一struct}DaSignerlnfo;AlDaOpen描述创建并返回一个数据认证句柄。原型AL—DA—HANDLEAlDaOpen(constvoid*pSig,unsignedintuSigSize);参数PSig[in]指向一个签名数据的指针uSigSize[in]以字节计算的签名大小返回值如成功则返回数据认证句柄,否则为INVALID—AL—M_HAWDLE也可参见charszSignerName[MAX—DA一SIGNER一NAME];AlDaClose0,AlDaUpdate(),AlDaVerify0,AlDaGetSignerlnfo()AlDaClose描述释放用于一个数据认证句柄的系统资源。原型voidAlDaClose(AL—DA—HANDLEhDa);参数hDa[in]由AlDaOpen返回的数据认证句柄。返回值无也可参见AlDaOpen(),AlDaUpdate()'AlDaVerify(),AlDaGetSignerlnfo0AlDaVerify描述运行数据认证原型intAlDaVerify(AL—DA—HANDLEhDa,int(承pfRead)(void氺,void氺,int),intiTota!Size,void水pPrivate);参数[in]数据认证句柄pfRead[in]调用函数的回调函数,用以读取数据(参见)。如有一个出错它会返回-1,如再无数据可读则返回0,否则返回所读取数据的量,并返回到AlDaVerify函数。预计该函数将被多次调用。iTotaJSize[in]需核实的全部数据大小。pPrivate[in]由pfRead回调函数传递的调用函数的私有数据。返回值如应用数据得到认证则为0,否则为-1。也可参见AlDaOpen(),AlDaClose(),AlDaGetSignerlnfo()以下为一个样本数据读取的回调函数。intReadCallback(void氺pPrivate,void本pData,intiSize)returniDataRead;AlDaGetSienerlnfo描述获取数据认证签名者信息原型intAlDaGetSignerMo(ALJDAJHANDLEhDA,DaSignerlnfo氺pDSI);参数hDa[in]数据认证句柄pDSI[out]指向一个含有签名者信息的结构的指针返回值如成功获得签名者信息则返回0,否则为-l也可参见AlDa0pen0,AlDaClose0,AlDaVerify()同步对象资源同步及控制是通过使用一个信标来达到的。抽象函数库内包括一套用以创建、打开、关闭并限定一个信标对象的函数。以下是一个示范性信标API。函数描述AL_SEM—HANDLEAlSemCreate(charconst氺pszName)创建一个被命名的信标并返回其句柄AL—SEM_HANDLEAlSemOpen(charconst*pszName)返回一个句柄到一个现存的信标voidAlSeraClose(关闭信标句柄;引用计数减少一位,且如果54AL—SEMJiA亂EhHandle)计数达到零则所引用的信标会被释放。intAlSemGet(AL—SEM—HANDLEhHandle)获得一个信标intAlSemRelease(AL—SEM—HANDLEhHandle)释放一个信标AlSemCreate描述创建一个被命名的信标,设定内部计数为零,并返回其句柄。原型AL—SEM一画DLEAlSemCreate(charconst氺pszName);参数pszName信标名称字符串返回值如成功则返回信标句柄,否则为INVALro—AL_SEM—HANDLE也可参见AlSemOpen(),AlSemClose(),AlSeraGet(),AlSemRelease()AlSemOpen描述返回一个句柄至一个现存的信标。原型AL—SEM—HANDLEAlSemOpeh(charconst*pszName);参数pszName信标名称返回值如成功则返回信标句柄,否则为INVALID一AL一SEM一HANDLE也可参见AlSemCreate(),AlSemClose(),AlSemGet(),AlSemRelease()AlSemClose描述关闭并释放与特定信标句柄相关联的系统资源。信标使用/引用计数也减少,且如计数达到零,被引用的信标对象会被销毁。原型voidAlSemClose(AL—SEM—HANDLEhSem);参数hSem使用AlSemCreate()orAlSemOpen()而获得的信标句柄返回值无也可参见AlSemCreate(),AlSemOpen(),AlSeraGet(),AlSeraRelease()AlSemGet描述获得指定的信标。如进入时内部计数大于零,其数值会减少一位并立即被返回。如进入时内部计数为零,调用被阻止,直到其它任务/线程调用AlSemRelease0从而使之大于零。原型intAlSemGet(AL—SEM—HANDLEhSem);参数hSem信标句柄返回值成功则返回0,否则为-1也可参见AlSemOeate(),AlSemOpen(),AlSemClose(),AlSemRelease()AlSemRelease描述释放信标,内部计数增加l原型intAlSemRelease(AL_SEM—HANDLEhSem);参数hSem信标句柄返回值成功则返回0,否则为-l也可参见AlSemCreate(),AlSemOpen(),AlSeraClose0,AlSemGet0HTTPAPI抽象函数库内包括一套函数,该套函数能通过使用一个调用函数提供的回调结构提供HTTP网络1/0。以下是一个示范性的HTTPAPI。<table>tableseeoriginaldocumentpage58</column></row><table>由AlHttpOpen()函数返回的HTTP句柄被定义为typedefstructAL—HTTPHANDLE_struct}*AL—HTTP—HANDLE;#defineINVALID—AL—HTTP—HANDLE((ALJ3TTP—HANDLE)0)HTTP回调结构AlHttpCallbacks被定义为typedefstructAlHttpCallbacks—struct<formula>formulaseeoriginaldocumentpage59</formula>在以上HTTP回调结构中所给出的回调函数提供了以下各种功能-pWrite由系统HTTP函数库调用,以储存收到的HTTP请求数据。pRead用于获取申请数据,以便作为一个HTTP请求的一部分被发送。pGetSize提供带申请者的内容数据大小的HTTP函数库,"Content-Length"。pSetSize由HTTP函数库调用,以便在数据到位时向调用的应用程序通知收到的内容数据的大小。AlHUpOpen描述创建并向HTTP函数库返回一个句柄。原型AL—HTTP—HANDLEAlHttpOpen(void);参数无返回值如创建一个HTTP实例失败,则返回INVALID—AL—HTTP_HMTDLE也可参见AlHttpClose()AlHttpClose描述关闭并释放与一个HTTP句柄相关联的系统资源。原型voidAlHttpClose(AL—HTTP—HANDLEhHTTP);参数hHTTP[in]由AlHttpOpen()函数返回的HTTP函数库句柄。返回值无也可参见AlHttpClose()AlHttpExec描述在指定的URL上执行一个HTTP方法(〃GET〃或〃P0ST〃),并带有可选择的文件头信息。原型intAlHttpExec(AL—HTTP—HANDLEhHTTP,charconst氺pszMethod,charconst氺pszURL,AlHttpCallbacks本pHttpCb,void承pPrivate);参数hHTTP[in]由AlHttpOpen()函数返回的HTTP函数库句柄pszMethod[in]HTTP方法规格。HTTP"GET"或"POST"pszURL[in]作出HTTP请求所在地址的URLpHttpCb[in]指向一套调用函数指定的HTTPI/O函数的指针。HTTP函数库使用在AlHttpCallbacks结构中指定的函数,以进行数据I/OpPrivate[in/out]指向一个调用函数数据的指针,该调用函数数据需传回在AlHttpCallbacks结构中指定的回调函数返回值成功则返回O,否则为-l也可参见AlHttpOpen(),AlHttpClose()页共享内存存放函数库的共享对象的系统内存地址是通过使用AlShmAddress()函数而得到的。该共享信息区域在设备启动时间被分配/准备,而且为函数库的不同实例所引用。AlShmAddress描述返回共享内存地址。原型void氺AlShmAddress(void);参数无返回值如成功则返回共享内存的地址,否则为NULL时间AlTmGetCurrent()向调用函数提供以秒为单位的当前系统时间。AlTmGetCinrent描述获得当前的系统时间。原型unsignedlongAlTmGetCurrent(void);参数无返回值如成功,则返回自纪元(协调世界时00:00:00,1970年1月1日)以来的以秒为单位的时间。如出错,则返回((unsignedlong)-1L)。设备信息AlDevGetlnfo描述获取设备的特定信息。由此函数返回的设备识别字符串被API使用。原型intAlDevGetlnfo(AlDevicelnfo*pDevicelnfo);参数pDevicelnfo[out]指向设备信息的指针AlDevicelnfo结构被定义为ftdefineAL—MAX—DEVICE—ID32typedefstructAlDevicelnfostructcharszDevicelD[AL—MAX—DEVICE—ID];}AlDevicelnfo;识别字符串szDevicelD是一个独一无二的终端/设备识别码一它用来将一个特定的移动通信设备与所有其它的设备单独识别出来。此信息用于为移动通信设备构建一个恶意软件签名下载URL。它不能包含任何不允许在一个URL中出现的字符(即空格)。返回值成功则返回0,失败则为-l调试AlDbgQutput描述向一个调试控制台输出调试字符串。该函数是一个用于发布版本的零函数。原型intAlDbgOutput(charconst水pszOutput);参数pszOutput[in]向调试控制台输出的字符串返回值成功则返回O,失败则为-l权利要求1.一种利用移动通信设备扫描应用程序数据的系统,其特征在于包括一应用程序,安装于能够通过无线网络进行通信的移动通信设备上,该应用程序可被改装,以利用所述移动通信设备执行任务;以及一与所述应用程序通信的扫描子系统,用于扫描与所述应用程序所执行任务相关的应用数据;其中所述应用程序将与所述应用数据相关的信息传输给扫描子系统,以便于由扫描子系统进行扫描。2、如权利要求l所述的系统,其特征在于,所述扫描包括按需病毒扫描。3、如权利要求l所述的系统,其特征在于,所述扫描包括按访问病毒扫描。4、如权利要求1所述的系统,其特征在于,所述应用程序包括邮件应用程序,且所述任务包括管理电子邮件。5、如权利要求1所述的系统,其特征在于,所述应用程序包括浏览器应用程序,且所述任务包括浏览网络。6、如权利要求1所述的系统,其特征在于,所述应用程序包括电话薄应用程序,且所述任务包括管理多个电话号码。7、如权利要求1所述的系统,其特征在于,所述应用程序包括消息应用程序,且所述任务包括传输消息。8、如权利要求l所述的系统,其特征在于,所述应用程序包括Java应用程序。9、如权利要求l所述的系统,其特征在于,所述移动通信设备包括蜂窝电话。10、如权利要求1所述的系统,其特征在于,所述信息涉及不同类型的应用数据。11、如权利要求10所述的系统,其特征在于,所述类型选自由超文本标记语言(HTML)类型、统一资源定位符(URL)类型、电子邮件类型、电话号码类型、java类型、文本类型以及未知类型组成的群组。12、如权利要求10所述的系统,其特征在于,所述类型选自包括超文本标记语言(HTML)类型、统一资源定位符(URL)类型、电子邮件类型、电话号码类型、java类型、文本类型和未知类型的群组。13、如权利要求10所述的系统,其特征在于,所述信息确认与每个所述应用数据类型相关联的格式。14、如权利要求1所述的系统,其特征在于,所述信息包括与不同类型应用数据相关的变量。15、如权利要求1所述的系统,其特征在于,所述信息显示所述扫描系统的扫描时间。16、如权利要求15所述的系统,其特征在于,所述时间涉及应用数据的接收。17、如权利要求15所述的系统,其特征在于,所述时间涉及应用数据的存储。18、如权利要求15所述的系统,其特征在于,所述时间涉及应用数据的提交。19、如权利要求15所述的系统,其特征在于,所述时间涉及应用数据的调用。20、如权利要求1所述的系统,其特征在于,所述信息显示所述扫描子系统所进行的扫描是否为可选。21、如权利要求l所述的系统,其特征在于,所述信息显示所述扫描子系统所进行的扫描是否为强制。22、如权利要求1所述的系统,其特征在于,所述信息改进所述扫描子系统的扫描时间。23、如权利要求l所述的系统,其特征在于,所述信息改进所述扫描子系统扫描的准确性。24、一种利用移动通信设备扫描应用程序数据的系统,其特征在于包括一应用程序设备,安装于能够通过无线网络进行通信的移动通信设备上,它可以被改装,以利用所述移动通信设备执行任务;以及一与该应用程序设备通信的扫描子系统设备,用于扫描与所述应用程序设备所执行的任务相关的应用数据;其中所述应用程序设备将与所述应用数据相关的信息传输给所述扫描子系统设备,以便于由所述扫描子系统设备进行扫描。25、一种利用移动通信设备扫描应用程序数据的方法,其特征在于包括-利用一安装有应用程序的移动通信设备执行任务;和利用一与所述应用程序通信的扫描子系统扫描与所述任务相关的应用数据;其中所述应用程序将与所述应用数据相关的信息传输给扫描子系统,以便于由扫描子系统进行扫描。26、一种利用移动通信设备扫描应用程序数据的计算机程序产品,其特征在于包括-利用一安装有应用程序的移动通信设备执行任务的计算机代码;和利用一与所述应用程序通信的扫描子系统扫描与所述任务相关的应用数据的计算机代码;其中所述应用程序将与所述应用数据相关的信息传输给所述扫描子系统,以便于由扫描子系统进行扫描。全文摘要提供了一种用于移动通信设备的独立平台系统以及与之相关的方法。包括一能够通过无线网络通信的移动通信设备。该移动通信设备安装有一操作系统。与之相关联的有一独立平台扫描子系统与移动通信设备上的操作系统进行通信以达到扫描目的。还提供了一种独立平台应用程序接口,用于为操作系统以及扫描子系统提供接口。该独立平台应用程序接口包括一抽象库,该抽象库作为端口将独立平台扫描子系统安装到移动通信设备以及与之关联的操作系统。文档编号G06F21/00GK101248427SQ200480016984公开日2008年8月20日申请日期2004年4月5日优先权日2003年4月17日发明者浦川安孝,石井宪司,维克托·古内索夫,藤田正德,达维德·利本齐,迈克尔·C·帕克申请人:迈克非公司;Ntt移动通讯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1