CN101248427B - 利用移动通信设备进行内容/上下文相关扫描的系统、方法 - Google Patents

利用移动通信设备进行内容/上下文相关扫描的系统、方法 Download PDF

Info

Publication number
CN101248427B
CN101248427B CN2004800169847A CN200480016984A CN101248427B CN 101248427 B CN101248427 B CN 101248427B CN 2004800169847 A CN2004800169847 A CN 2004800169847A CN 200480016984 A CN200480016984 A CN 200480016984A CN 101248427 B CN101248427 B CN 101248427B
Authority
CN
China
Prior art keywords
scanning
application program
application
mobile communication
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2004800169847A
Other languages
English (en)
Other versions
CN101248427A (zh
Inventor
维克托·古内索夫
达维德·利本齐
迈克尔·C·帕克
浦川安孝
石井宪司
藤田正德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
McAfee LLC
Original Assignee
NTT Docomo Inc
McAfee LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Docomo Inc, McAfee LLC filed Critical NTT Docomo Inc
Publication of CN101248427A publication Critical patent/CN101248427A/zh
Application granted granted Critical
Publication of CN101248427B publication Critical patent/CN101248427B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

提供了一种用于移动通信设备的独立平台系统以及与之相关的方法。包括一能够通过无线网络通信的移动通信设备。该移动通信设备安装有一操作系统。与之相关联的有一独立平台扫描子系统与移动通信设备上的操作系统进行通信以达到扫描目的。还提供了一种独立平台应用程序接口,用于为操作系统以及扫描子系统提供接口。该独立平台应用程序接口包括一抽象库,该抽象库作为端口将独立平台扫描子系统安装到移动通信设备以及与之关联的操作系统。

Description

利用移动通信设备进行内容/上下文相关扫描的系统、方法
技术领域
本发明涉及移动通信设备的安全领域,具体地说,是关于扫描移动通信设备以侦测恶意软件。 
背景技术
在过去的十年中,移动蜂窝式电话的数目与使用增长迅速。最近一段时期,引入了无线设备,它能将移动电话与个人数字助理(PDA)的功能相结合。可以预计,在未来一段时间内,随着新型蜂窝式电信标准(例如:GPRS、UMTS及WAP)使得跨无线界面上的高速数据传输成为可能,这一领域将经历强劲的增长。 
可以预计,无线通信平台将有可能遭受到所谓的恶意软件(malware),如病毒、特洛伊木马、计算机蠕虫(下文中统称为‘病毒’),以及其它干扰性/有害内容的侵袭;其侵害方式与现今个人计算机以及工作站所受侵害方式大致相同。事实上已经有多种移动电话病毒被确认。 
为抵御病毒的袭击,必须在移动平台上布置安装防病毒软件,其方式与桌上型计算机环境的布置方式大致相同。多种不同的桌上型防病毒应用软件现已问世。这些应用软件的大部分依靠一种基本的扫描引擎,它会寻找可疑档案中是否存在预先确定的病毒签名。这些签名储存在一个数据库中,必须经常对其进行更新,以反映最新识别的病毒信息。 
一般来说,用户们可以每隔一段时间通过互连网、从接收的电子邮件、或从一张光盘和软盘下载替换用数据库。用户们也需要时常更新软件引擎,以便于在发现新类型的病毒时利用最新的病毒侦测技术。 
移动无线平台给软件开发商们(包括防病毒软件开发商)带来了一系列的问题。具体地,移动无线应用程序通常没有被标准化,这就要求扫描器在执行扫描工作以前,需要先识别应用程序的信息。不幸的是,此信息搜集给扫描工作带来了很大损害。 
发明内容
本发明提供了利用移动通信设备扫描应用程序数据的系统、方法以及计算机程序产品。包括一安装于移动通信设备的应用程序,它可以通过无线网络进行通信。该应用程序可被改装,以利用移动通信设备执行工作。一与其相关联的扫描子系统与该应用程序进行通信,以扫描与应用程序执行的任务相关的应用数据。使用时,应用程序将与应用数据有关的信息传输给扫描子系统,从而有利于扫描系统的扫描。 
在一个实施例中,扫描可包括按需式病毒扫描和和/或按访问病毒扫描。 
在另一个实施例中,应用程序可包括一邮件应用程序。应用程序还可进一步包括一浏览器应用程序,其任务包括浏览网络。另外,应用程序可包括一电话薄应用程序,其任务包括管理多个电话号码。作为一种选择,该应用程序可包括一消息应用程序,其任务包括传输消息。应当注意可包括任何类型的程序。(例如Java应用程序等)。 
在再一个实施例中,传输给扫描子系统的信息可涉及各种类型的应用数据,包括超文本标记语言(HTML)类型、统一资源定位符(URL)类型、电子邮件类型、电话号码类型、java类型、文本类型,和/或其他未知类型。 
作为一种选择,该信息还可进一步确认与每种应用数据类型相关的格式。该功能可通过对该信息设置与不同应用数据类型相关的变量而实现。 
在另一个实施例中,该信息可显示扫描系统的扫描时间。该时间可能涉及应用数据的接收、应用数据的存储、应用数据的递交,和/或应用数据的调用。另外,该信息可显示是否扫描系统的扫描为可选或强制。 
由此,该信息可改进扫描系统的扫描时间。另外,该信息还可提高扫描系统的扫描准确性。 
附图说明
图1是移动通信框架一个实施例示意图; 
图2是移动通信框架另一个实施例示意图; 
图3是与一个移动通信设备相关联的一个架构的实施例示意图; 
图4是一个通过使用一台移动通信设备访问安全或内容分析功能的系统的实施例示意图; 
图5是根据图4所示系统的一个应用服务器的实施例,通过使用一台移动通信设备访问安全或内容分析功能框架的示意图; 
图6是根据图4所示系统的一个重复加载函数库的实施例,通过使用一台移动通信设备访问安全或内容分析功能框架的示意图; 
图7是在图4所示系统下执行的一个按需式扫描系统的示意图; 
图8是一个应用程序接口(API)的各种不同组件的一个阶梯状关系的实施例示意图,它可以用于在移动应用程序与一个扫描子系统之间提供接口; 
图9是一个示范型函数库接口启动的示意图; 
图10是一个出错代码功能的一个示范性格式的实施例示意图; 
图11是一个扫描子系统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用于在一个网络(如互联网等)上显示数据。请参见操作1。在当前的使用过程中,用户可以使用显示器106浏览各类网络上的数据,具体是通过后端服务器104选择链接或锚点以从网络上获取数据。请参见操作2。接着,在操作3中,扫描子系统105被调用以扫描所获取的数据。 
在当前的实施例中,扫描子系统105显示出已经找到与操作4中所获取数据有关的恶意软件。此时,通过显示器106向一位用户提供了一个选项,即中断此次获取和/或使用/访问该数据而忽略所识别出的恶意软件,如操作5所示。基于操作5中的决定,用户会或不会成为一次‘攻击’的对象,如操作6所示。 
图2是基于另一个实施例的移动通信框架200的示意图。该移动通信框架200类似于图1所示的移动通信框架100,只是移动通信设备对所获取数据中恶意软件的识别作出反应的方式有所不同。 
具体地,操作5中仅提供给用户一个选项。即,用户只能关闭任何与被发现包含恶意软件的数据有关的对话。 
图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紧密联合,可以降低管理费用与代码重复率。更多关于该应用程序接口与相关函数库的示范性信息将在讨论此后的图表时作进一步阐述。 
图5基于图4中系统400的应用服务器,显示了通过使用移动通信设备访问安全或内容分析功能的框架500。应该注意到当前的框架500可以在任何所需的环境中加以执行。 
如图所示,扫描子系统可包括扫描程序502,该扫描程序通过应用程序接口506以及一个关联的协议(例如uItron消息联络系统)与应用程序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由一次更新应用所调用时,函数库就会连接上一个远程后端服务器(参见例如图1)并下载最新的文件(例如mdo.sdb与mdo.pd)。 
扫描子系统配置是通过运用MDoConfigOpen()812、MDoConfigClose()814、MDoConfigGet()816以及MDoConfigSet()818所达成的。一旦一个配置句柄通过调用当前的应用程序接口800而获得,进行调用的应用程序使用get与set配置API以查询并设定扫描子系统配置的各种变量。 
同时包含于当前应用程序接口800的是一个称为MDoGetLastError()820的出错获取函数。该函数用于获取关于已发生的最后出错的信息。 
在作出任何API调用之前,最好是在启动时间,MDoSystemInit()825被调用以初始化函数库环境设置。该函数库保存了配置设置、恶意软件代码侦测逻辑(如mdo.pd)与签名数据库(如mdo.sdb)、及各种内部变量(如同步对象,等),并将其存放于固定的持续性储存地点。 
MDoLibraryOpen()830和MDoLibraryClose()840用于初始化函数库。一个应用程序可以在任何其它的API调用发生之前调用MDoLibraryOpen()830,而且应用程序可以在终止之前调用MDoLibraryClose()840。 
应用程序接口800可以通过使用不同的应用程序接口组件从而能够支持各种不同的功能,例如系统环境初始化、版本状态信息获取、更新扫描子系统、扫描、配置扫描子系统,等。更多关于在应用程序接口800环境下上述功能的信息将在下文进行阐述。 
系统初始化
MDoSystemInit()825针对保存于特定永久储存域的数据进行验证与环境初始化工作。一个恶意代码/内容签名模式的数据库(即mdo.sdb)、侦测逻辑(即mdo.pd)、配置设置、以及同步对象可以储存于这些存储域中。MDoSystemInit()825可以在API函数中的任一函数被执行之前被调用一次(即在启动时)。 
表#1说明了关于MDoSystemlnit()825的示范性信息。 
表#1
MDoSystemInit 
描述 
核实并初始化系统环境信息 
原型 
int MDoSystemInit(void); 
参数 
无 
返回值 
如成功则0,否则为非零出错代码。 
函数库接口API
应用程序接口800包括多个函数库接口组件。API接口实例化可以通过使用MDoLibraryOpen()830来达成。使用该函数而获得的实例化函数库接口句柄可以用于其后的API调用。在该应用程序终结之前,MDoLibraryClose()840可以被调用以释放该句柄。图9说明了通过使用MDoLibraryOpen()830及MDoLibraryClose()840的一个示范性函数库接口初始化过程900。 
表#2说明了关于MDoLibraryOpen()830的示范性信息。 
表#2
MDoLibraryOpen 
描述 
初始化并返回一个API函数库界面句柄 
原型 
MDOLIB_HANDLE MDoLibraryOpen(void); 
参数 
无 
返回值 
如成功,则返回函数库界面句柄, 
否则为INVALID_MDOLIB_HANDLE。 
也可参见 
MDoLibraryClose() 
表#3说明了关于MDoLibraryClose()840的示范性信息。 
表#3
MDoLibraryClose 
描述 
释放由MDoLibraryClose()函数返回的与一个API函数库句柄相关联的系 
统资源 
原型 
void MDoLibraryClose(MDOLIB_HANDLE hLib); 
参数 
hLib 
[in]由MDoLibraryOpen返回的函数库句柄 
返回值 
无 
也可参见 
MDoLibraryOpen() 
出错获取
一旦函数库已经成功地由MDoLibraryOpen()830初始化并实例化,MDoGetLastError()820向应用程序提供关于最近一次发生出错的信息。 
表#4说明了关于MDoGetLastError()820的示范性信息。 
表#4
MDoGetLastError 
描述 
返回指定的函数库实例的最后一次出错值 
原型 
MDoErrorCode MDoGetLastError(MDOLIB_HANDLE hLib); 
参数 
hLib 
[in]由MDoLibraryOpen返回的函数库句柄 
返回值
MDoErrorCode数据类型可以被定义为一个32位的无符号整数,它既包含组件又包含出错代码。通常,获取的出错信息可能被设定在平台抽象API层。有鉴于此,此处所给的MDoErrorCode格式类似于由抽象层API所定义的AlErrorCode格式(参见附件A)。图10基于一个实施例说明了一个MDoErrorCode的示范性格式1000。 
表#5说明了关于MDoGetLastError()820的示范性信息。 
表#5
MDoErrorCode被定义为: 
typedef unsigned long MDoErrorCode; 
也可参见 
MDoLibraryOpen(),MDoScanOpenO,MDoScanData(), 
MDoScanUpdate() 
示范性计算机代码#1通过调用一次MDoGetLastError()820说明了一个样本函数库的调用次序。 
计算机代码#1 
. .MDOLIB_HANDLE hLib; MDOSCAN_HMFDLE hScanner; MDoErrorCode errCode; . .
hMDoLib=MDoLibraryOpen();if(hMDoLib==INVALID_MDOLIB_HANDLE){   return(-1);
}.  .  hScanner=MDoScanOpen(hLib);if(hScanner==INVALID_MDOSCAN_HANDLE){   errCode=MDoGetLastError(hLib);   ReportError(errCode);   MDoLibraryClose(hMDoLib);   return(-1);}  .  .MDoScanClose(hScanner);MDoLibraryClose(hMDoLib);
出错代码
一个由MDoGetLastError 820报告的出错代码包括两个部分:组件代码与出错代码。请参见附件A以获得更多信息。表#6列出了示范性出错代码及相应的组件代码。MDoGetLastError 820也返回设定于抽象函数库层的出错代码。应该注意,以下的列表仅仅出于说明的目的,不应该将其理解为在任何方式上具有限制性。 
表#6
Figure G2004816984719951201D000111
Figure G2004816984719951201D000121
扫描子系统API
应用程序接口800包括多个扫描子系统组件。扫描子系统API组件提供了数据/内容扫描及签名更新服务。其中包括MDoScanOpen()802、MDoScanClose()804、MDoScanVersion()806、MDoScanUpdate()810、及MDoScanData()808。MDoScanOpen()802用于扫描子系统对象实例化。MDoScanVersion()806提供扫描子系统及签名数据库版本信息。MDoScanUpdate()810运行签名数据库更新。MDoScanData()808运行恶意代码/内容数据扫描。图11基于一个实施例说明了扫描子系统API调用次序1100。 
MdoScanOpen
表#7说明了关于MDoScanOpen()802的示范性信息。 
表#7
描述 
返回一个扫描子系统实例句柄 
原型 
MDOSCAN_HANDLE MDoScanOpen(MDOLIB_HANDLE hLib) 
参数 
hLib 
[in]通过使用MDoLibraryOpen()函数而获得的函数库句柄 
返回值 
如成功,则返回扫描子系统实例句柄。 
如出错,则为INVALID_MDOSCAN_HANDLE。 
也可参见 
MDoScanClose(),MDoScanData(),MDoScanUpdate(), 
MDoLibraryOpen() 
MdoScanClose
表#8说明了关于MDoScanClose()804的示范性信息。 
表#8
描述 
释放扫描子系统实例及相关联的系统资源 
原型 
void MDoScanClose(MDOSCAN_HANDLE hScan); 
参数 
hScan 
[in]通过使用MDoScanOpen()函数而获得的扫描子系统句柄 
返回值 
无 
也可参见 
MDoScanOpen(),MDoScanData(),MDoScanUpdate() 
MdoScanVersion
表#9说明了关于MdoScanVersion()806的示范性信息。 
表#9
描述 
从由MDoScanOpen()函数返回的一个扫描器句柄获得扫描子系统及签名版 
本信息 
原型 
int MDoScanVersion(MDOSCAN_HANDLE hScan, 
                   SVerlnfo*     pVersion); 
参数 
hScan 
[in]通过使用MDoScanOpen()函数而获得的扫描子系统句柄。 
pVersion 
[out]指向一个包含版本信息结构的指针 
返回值 
如成功则返回0,否则为-1。 
也可参见 
MDoScanOpen(),MDoScanClose(),MDoScanData(), 
MDoScanUpdate() 
示范性计算机代码#2说明一个样本版本信息结构。 
计算机代码#2 
  /*版本信息由以下组成  <device id>+<MDo>+<PD>+<SDB>  例如:    device id::″Win32TestPlatformRev05″    MDo:1    mdo.pd:2    mdo.sdb:32  */
  #define MDO_DEVID_MAX 32  typedef struct  {      char szDevID[MDO DEVID MAX];/*device id  */      unsigned int uMDoVer;/*版本  */      unsigned int uEngVer;   /*侦测逻辑  (mdo.pd)version    */      unsigned int uSDbVer;   /*签名数据库  (mdo.sdb)version*/  }SVerlnfo;
由MdoScanVersion()806所报告的移动通信设备识别字符串是通过由AlDevGetInfo所返回的使用设备识别字符串而设定的(参见附件A)。 
MdoScanData
表#10说明了关于MDoScanData()808的示范性信息。 
表#10
描述 
MDoScanData将从一个应用程序被调用以扫描一个特定的数据类型。调用应用程序指定了扫描的动作、扫描目标类型、一套用以访问数据的I/O函数、以及一个可选性回调函数。数据扫描的结果以一个调用函数提供的数据结构被返回。MDoScanData是重复加载的。 
原型 
int MDoScanData(MDOSCAN_HANDLE hScan, 
                SScanParam*  pParam, 
                SScanResult* pResult); 
参数 
hScan 
[in]从一次调用MDoScanOpen()函数而获得的扫描子系统句柄 
pParam 
[in]指向一个包含数据扫描参数的结构的指针 
pResult 
[out]指向一个包含数据扫描结果的结构的指针 
返回值 
如成功则返回0,否则为-1而且出错代码被设定 
也可参考 
MDoScanOpen(),MDoScanClose(),MDoScanVersion(), 
MDoScanUpdate() 
MdoScanUpdate
表#11说明了关于MDoScanUpdate()810的示范性信息。 
表#11
描述 
运行恶意代码/内容签名模式数据库(mdo.sdb)及侦测逻辑(mdo.pd)更 
新。 
原型 
int MDoScanUpdate(MDOSCAN_HANDLE hScan, 
                  SUpdateParam      *pParam); 
参数 
hScan 
[in]通过使用MDoScanOpen()函数而获得的扫描句柄 
pParam 
[in]指向一个更新参数结构的指针,该结构包含一个用于更新取消/放弃 
及进程状态更新的回调函数指针 
示范性计算机代码#3说明了更新参数结构被定义的方式 
计算机代码#3 
  typedef struct SStatus struct  {      int iCurrent;      int  iTotal;  }SStatus;  typedef struct SUpdateParam_struct  {     void* pPrivate;     int(*pfCallBack)(void*pPrivate,int iReason,void  *pParam);  }SUpdateParam;
调用应用程序可以在调用函数的时候设定函数指针及将要传递给函数的数据。请注意表#12。 
表#12
 回调原因(iReason)   描述
  MBO_UCB_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配置组件而指定/获取的配置变量与值可以用以无效字符(’\0’)结尾的8位字符的字符串来代表。表#13列出了现有的各种配置变量。 
表#13
Figure G2004816984719951201D000181
MdoConfigOpen
表#14说明了关于MDoConfigOpen()812的示范性信息。 
表#14
描述 
返回一个句柄到一个配置设定,然后将其传递给后面的调用MDoConfigGet() 
和MDoConfigSet(). 
原型 
MDOCONFIG_HANDLE MDoConfigOpen(MDOLIB_HANDLE hLib); 
参数 
hLib 
[in]通过使用MDoLibraryOpen()函数获得的函数库句柄 
返回值 
如成功则返回配置句柄。 
如出错则返回INVALID_MDOCONPIG_HANDLE。 
也可参见 
MDoConfigClose(),MDoConfigSet(),MDoConfigGet() 
MdoConfigClose
表#15说明了关于MDoConfigClose()814的示范性信息。 
表#15
描述 
释放系统资源并关闭配置句柄 
原型 
void MDoConfigClose(MDOCONFIG_HANDLE hConfig); 
参数 
hConfig 
[in]由MDoConfigOpen()函数返回的配置句柄 
返回值 
无 
也可参见 
MDoConfigOpen(),MDoConfigSet(),MDoConfigGet() 
MdoConfigGet
表#16说明了关于MDoConfigGet()816的示范性信息。 
表#16
描述 
为指定的配置变量获得一个配置值 
原型 
int MDoConfigGet(MDOCONFIG_HANDLE hConfig 
                char const*            pszName, 
                char*                pBuffer, 
                unsigned int           uSize); 
参数 
hConfig 
[in]由MDoConfigOpen()函数返回的配置句柄 
pszName 
[in]以NULL-终止的配置变量名称 
pBuffer 
[out]配合所指定变量的以NULL-终止的配置设定/值 
uSize 
[in]以字节计算的pBuffer长度 
返回值 
成功则返回0,否则为-1。 
也可参见 
MDoConfigOpen(),MDoConf igClose(),MDoConf igSet() 
MdoConfigSet
表#17说明了关于MDoConfigSet()818的示范性信息。 
表#17
描述 
为指定的配置变量设定一个值 
原型 
int MDoConfigGet(MDOCONFIG_HANDLE hConfig 
                char const*           pszName, 
                char const*           pszValue); 
参数 
hConfig 
[in]由MDoConf igOpen()函数所返回的配置句柄 
pszName 
[in]以NULL-终结的配置变量名称 
pszValue 
[int]配合所指定变量的以NULL-终结的新的配置设定/值 
返回值 
如成功则返回0,否则为-1 
也可参见 
MDoConfigOpen(),MDoConfigClose(),MDoConfigGet() 
为便于扫描的应用程序/扫描子系统通信
如前所述,应用程序可与扫描子系统进行信息通信以方便扫描子系统进行扫描。这一通信可通过上面所描述的API得到便利。上述的信息可与被扫描的数据类型及与此类扫描相关联的时间安排有关。更多关于上述API达成此结果方式的描述将在下文作阐述。 
扫描参数(SscanParam)
调用应用程序可以通过使用SScanParam结构向扫描子系统提供一个扫描参数。包含于扫描参数的信息向扫描子系统提供: 
1)扫描子系统的动作类型(例如iAction), 
2)扫描数据类型(例如需要扫描的应用数据的类型-iDataType), 
3)指向扫描目标的数据指针(例如pPrivate), 
4)获取数据大小(以字节为单位)的函数(例如pfGetSize), 
5)重置扫描数据大小的函数(例如pfSetSize), 
6)扫描子系统用于获取一个扫描数据块的函数(例如pfRead), 
6)用于向扫描数据写入的函数(例如pfWrite),以及 
7)扫描子系统状态/进程报告的回调函数(例如pfCallBack)。 
示范性计算机代码#4说明了一个数据扫描参数的结构。 
计算机代码#4
typedef struct SScanParam struct { int iAction; int iDataType; void* pPrivate; unsigned int (*pfGetSize)(void*pPrivate); int (*pfSetSize)(void*pPrivate, unsigned int uSize);
unsigned int (*pfRead)(void*pPrivate, unsigned int uOffset, void* pBuffer, unsigned int uCount); unsigned int (*pfWrite)(void*pPrivate, unsigned int uOffset, void const* pBuffer, unsigned int uCount); int (*pfCallBack)(void*pPrivate, int iReason, SCBArg const*pCBArg);}SSCanParam;
扫描动作(iAction)
扫描动作指定了在被提供的应用数据上要运行的扫描的类型。表#18说明了各种不同的示范性扫描动作。 
表#18
  扫描动作ID   描述
  MDO_SA_SCAN_ONLY   扫描子系统运行扫描并报告发现的恶意代  码。不进行任何修复。
  MDO_SA_SCAN_REPAIR   在运行扫描之后,包含恶意代码的对象将被  修复。
扫描数据类型(iDataType)
调用应用程序可以通过使用这一变量向扫描子系统通知应用数据类型以及格式。 
图13说明了各种不同的示范性应用数据类型1300,应用程序能够将其通过API向扫描子系统进行传送。Url-字符串的格式可以符合统一资源定位器(RFC 1738)规格。 Email-字符串的格式可以符合互联网电子邮件地址格式(RFC 822)规格。缺省的域可以设置为任何所需的域。另外,电话号码字符串可以包括数字字符’0’至’9’,以及’#’与’*’字符。 
扫描数据指针/句柄(pPrivate)
另外会提供一个指向一个应用扫描对象的指针(或句柄)。扫描子系统并不一定使用该数据指针/句柄运行直接的内存I/O。数据指针/句柄被传递回调用函数以通过使用调用函数所指定的I/O函数进行读/写。 
扫描数据大小(pfGetSize)
当前的函数由扫描子系统用于从调用应用程序处获得扫描目标数据的大小(以字节为单位)。 
扫描数据调整大小(pfSetSize)
该函数由扫描子系统用于请求调用应用程序调整被修复/清洗的应用数据至一个给定的大小(以字节为单位)。这一函数可以与扫描并修复/删除选项同时使用。 
扫描数据读取函数(pfRead)
该即时函数可由扫描子系统使用,用于从调用应用程序读取一个指定量的应用数据。扫描数据写入函数(pfWrite) 
这是一个可选的参数,可由扫描子系统使用,用于向扫描对象写入一个指定量的应用数据以作为修复过程的一部分。如扫描动作被设定为修复或删除,则这个函数指针可以进行设定。 
回调函数(pfCallBack)
如被指定,扫描子系统通过以下表格内所描述的信息调用该指定函数。如果返回的是一个负返回值,则回调函数放弃扫描过程。表#19阐述了一个示范性的回调代码列表。 
表#19
  回调原因ID   描述
  MDO_CB_DETECTED   向调用应用程序通知在扫描对象中已经侦测  到一个恶意代码。回调数据参数’arg’被设  定为指向SCBArg结构。
  MDO_CB_CLEAN_READY   向调用应用程序通知被识别的恶意软件可以  被清除/修复。回调数据参数’varg’被设定  为指向SCBArg结构。
示范性的计算机代码#5说明了一个扫描子系统的回调结构。 
计算机代码#5
  typedef struct SCBArg_struct  {  text_t const* pszName;  /*被侦测恶意软件的名称*/  text_t const* pszVariant;/*被侦测恶意软件的变量名  */   unsigned int uType;    /*恶意软件类型*/   }SCBArg;
扫描结果(SScanResulf)
对象扫描的结果,即被侦测到的恶意软件信息,包含于由调用应用程序所提供的SScanResult结构被返回至调用应用程序。该SScanResult结构包含一个指向一个包含扫描结果信息结构的指针,以及一个指向一个被用于移除扫描结果资源函数的指针。用于存放扫描结果的内存由扫描子系统进行分配,并由调用pfDeleteResult指针所指向的函数所释放。 
示范性计算机代码#6说明了一个样本调用次序。 
计算机代码#6
int ScanAppData(...){   SScanResult     scanResult;  .  .     if(MDoScanData(hScanner,&scanParam,&scanResult)==0)   {  .  .        scanResult.pfFreeResult(&scanResult);   }  .  .  }
示范性计算机代码#7说明了一个被侦测到的恶意代码/内容信息结构。 
计算机代码#7
  typedef struct SDetected struct  {     struct SDetected_struct*pNext;                          /*指向下一个被发现的恶意软件                       */                          /*如在名单末尾则为NULL*/     text_t const* pszName;   /*被侦测到的恶意软件名  称*/     text_t const* pszVariant;   /*被侦测到的恶意软  件的变量名*/
    unsigned int uType;       /*被侦测到的恶意软件类型*/    unsigned int uBehavior;   /*指定严重性的位-域*/                          /*等级及行为级别*/}SDetected;
示范性计算机代码#8说明了一个扫描结果结构。 
计算机代码#8
typedef struct SScanResult_struct{   int         iNumDectected; /*所发现的恶意软件数目*/   SDetected*pList;         /*被侦测到的恶意软件名单*/   /*用于释放被报告扫描结果的函数 ptr*/   void  (*pfFreeResult)(struct SScanResult_struct*pResult);}SScanResult;
严重性等级与行为级别(uBehavior)
图14基于一个示范性实施例,它表明了包括在SDetect结构内的含有恶意软件严重度标志及应用程序行为级别的位-域变量1400。 
表#20阐述了一个示范性恶意软件的严重性级别列表。 
表#20
  严重度标志   描述
 MDO_SC_USER   所侦测到的恶意软件对用户有害。
 MDO_SC_TERMINAL   所侦测到的恶意软件对设备有害。
如被扫描过的应用数据包含对移动通信设备用户有害的恶意软件,则扫描子系统设定MDO_SC_USER标志。如果对移动通信设备本身有害,MDO_SC_TERMINAL标志被设定。如果其对用户和移动通信设备都有害,则MDO_SC_USER与MDO_SC_TERMINAL标志都被设定。 
应用程序行为级别指定了对侦测到包含恶意软件的应用数据采取什么样的措施。表#21列出了行为级别的各种值及应用程序采取的相应行动。 
表#21
  行为级别   描述
  MDO_BC_LEVEL0   以警告加以处理。该严重性级别可被分  配给先前被认为是恶意的数据。
  MDO_BC_LEVEL1   在处理前提示用户。询问用户是否他/  她希望应用程序处理该数据。
  MDO_BC_LEVEL2   不处理该数据。
  MDO_BC_LEVEL3   不处理该数据并不提示用户作移除。如  果内容被储存于设备中,在移除前提示  用户给予许可。
  MDO_BC_LEVEL4   不处理该数据,如果被储存将其自动移  除。
当在被扫描的数据中发现多个恶意代码,调用应用程序预期将以最高级别的行为级别来做出反应。例如,如果MDO_BC_LEVELO和MDO_BC_LEVEL3都被报告,应用程序可以采取MDO_BC_LEVEL3的行动。 
图15说明了一个图表1500,阐明了扫描子系统的扫描时机安排作为通过图13的各变量被识别出数据类型的一个函数而变动的方式。 
签名数据库更新
如前所述,更新过程可被简化,以适应移动通信框架固有的有限带宽。更多关于可达成如此效果的各种不同方式将在下文作阐述。 
被更新的组件
MDoScanUpdate函数随着更新服务提供了两个组件[例如恶意代码侦测逻辑(mdo.pd)与签名数据库(mdo.sdb)]。一个组件(例如mdo.pd)可包含侦测逻辑并在一个更新的版本出现时被完全更新。另一个组件(例如mdo.sdb)可以逐步更新直到n个先前的版本。对第二个组件的一次完全更新可在具有比n更早版本的移动通信设备上运行。例如,如果n被设定为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=<MDO-VER>&eng=<ENG- 
VER>&sdb=<SDB-VER>&chk=<CHUNK> 
以下是一个描述上述URL变量的表格: 
  变量 描述
  <BASE-URL> 更新通过使用MDoConfigGet函数而获得的服务器URL(参见0部分)
  <DEV-ID> 移动通信设备识别码;由AlDevGetlnfo函数返回
  <MDO-VER> MDo API版本
  <ENG-VER> 侦测逻辑,mdo.pd,版本
  <SDB-VER> 签名数据库,mdo.sdb,版本
  <CHUNK> 更新软件包块,或部分、号码;最初为1(=1)
表#23说明了一个符合上述描述的URL的一个特定范例。 
表#23
http://update.mcafeeacsa.com/504i?dev=X504i05&mdo=2&eng=3&sdb=56&chk=l
以上表#23的URL指定了基本-URL″http://update.mcafeeacsa.com/504i″,″X504i05″为设备识别码,API版本2,恶意代码侦测逻辑版本3,以及签名数据库版本56。应该注意,当移动通信设备最初联络后端服务器的时候,其″数据块″或部分、号码可以设定为1。此外,基本-URL可以通过让MDoConfigGet API使用″UpdateURL″配置变量而获得。 
在收到请求之后,后端服务器通过将已储存的恶意代码侦测逻辑及签名数据库版本同在URL中编码存放的版本信息相比较,从而决定哪个更新包需要被下载。 
如果不需要进行更新,后端会返回一个无内容的回应。在操作1701中,移动通信设备收到了作为第一部分的回应。如果决定第一部分包括上述的无内容回应(参见决定1702),方法1700被中止,这是因为没有更新需要下载。该特征对适应移动通信框架中固有的有限带宽是有益的。 
另一方面,如果一个更新包的第一个部分被返回,方法1700将在收到更新的第一部分之后(或者有可能的是与之同时)继续接收更新的其它部分。请注意操作1704-1708。应该注意第一部分可伴随着整包的大小及部分的计数信息。 
在下载剩余的更新部分时,可以对所下载URL的部分号码作限定。表#24说明了一个指定部分号码″3″的URL的特定范例。 
表#24
http://update.mcafeeacsa.com/504i?dev=X504i05&mdo=2&eng=3&sdb=56&chk=3
在一个实施例中,可以决定更新的完整性。相应地,在是否被核实了更新的完整性的基础上,可以有条件地将更新安装于扫描子系统中。 
作为一种选择,更新的完整性可以通过使用一个签名来确定。此签名可以同更新的一个部分一起接收(即一个最后部分)。之后,可以将该签名同使用更新的每个部分生成的另一签名进行比对。请注意操作1710。 
在一个实施例中,签名可以通过一个RSA私钥生成并在移动通信设备上使用一个包含于更新内的相应公钥进行认证。签名核实及生成可通过使用一个特定的认证函数库作进一步运行。 
假设完整性被核实,任何由扫描子系统运行的扫描会被停顿或中止。请注意操作1712。应该注意该停顿是可选择的。 
接下来,可将更新安装于扫描子系统。请注意操作1714。在实例中任何扫描被停顿的地方,一旦更新被安装于扫描子系统,之后可以继续使用扫描子系统进行扫描。参见操作1716。 
为适应移动通信框架中固有的有限带宽,更新的某些部分的大小可以最小化。此外,可以对更新的部分进行压缩。 
在另一个实施例中,可将每个更新部分的格式设计为能够适应移动通信框架中固有的有限带宽。更多关于此类格式的信息将在下文作阐述。 
表#25说明了一个下载更新各部分的示范性格式。 
表#25
  MPKG  <part1>  <part2>  .  .  .    <partn>  [signature:sig-len]  [sig-len:4]
在表#25中列出的上述部分的每一个部分在表#26中作如下定义。 
表#26
  X-ContentLength:<part-length>\r\n  X-ContentName:<part-name>\r\n  X-Name:<component-name>\r\n  X-Version:<component-version>\r\n  \r\n  [part-data:part-length bytes]
 
每个部分由一个文件头和数据组成。文件头可以指明更新的相关部分的一个识别码、更新的相关部分的一段长度等等。此外,文件头可以指定包含的数据名称与长度,并用一个额外的CR+LF对将其与实际数据相分隔。表#27列出了与文件头相关联的示范性数据/内容的名称。 
表#27
  组件名称   描述
  ″pd″   侦测逻辑
  ″sdb″   签名数据库更新
表#28说明了一个示范性的更新包。 
表#28
  MPKG  X-ContentLength:6423\r\n  X-ContentName:update3 0_32\r\n  X-Name:sdb\r\n  X-Version:32\r\n  \r\n  <SDB update binary:6423>  <signature:sig-len>  <sig-len:4>
抽象函数库API
如前所述,提供了一个独立于平台的系统及相关的方法以用于一台移动通信设备。其包括一独立于平台的扫描子系统,可同用于扫描的移动通信设备的操作系统进行通信。另外还提供了一个独立于平台的应用程序接口,为操作系统及扫描子系统之间提供界面帮助。独立于平台的应用程序接口包括了一个抽象函数库,用于将独立于平台的扫描子系统接驳于移动通信设备及相关联的操作系统。 
通过该设计,扫描子系统可以独立于平台,并由此能在任何类型的操作系统/移动通信设备的组合上加以执行。 
在一个实施例中,抽象函数库可以支持系统初始化、函数库初始化、出错函数、内存分配、输入/输出(I/O)、数据认证、同步、超文本传输协议、共享内存、系统时间、设备信息、以及调试。更多关于上述应用程序接口的一个可选择实例的示范性信息将在附件A中进行阐述。 
虽然上文描述了不同的实施例,但容易理解,它们仅通过范例的形式被提出,而不具有限制性。因此,某个特定实例的应用广度与范围不应该由任何以上所描述的示范性实例所限制,而应只根据权利要求及与其有同等效果的陈述所确定。 
附件A
当前的应用程序接口(API)包括以下子系统: 
·系统初始化 
·函数库初始化 
·出错函数 
·堆内存分配 
·永续性内存/储存体I/O 
·数据认证 
·同步对象(信标) 
·HTTP API 
·共享内存 
·系统时间 
·设备信息 
·调试 
本附件中还描述了一套定义于抽象函数库(AL)层的C-语言定义,供在API函数库中使用。 
系统初始化
依赖于平台/系统的启动初始化是由AlLibrarySysInit()函数运行的。该函数的设计使其能从先前描述过的MDoSystemlnit()函数被调用。 
AlLibrarySysInit
描述 
运行依赖于系统的初始化 
原型 
int AlLibrarySysInit(void); 
参数 
无 
返回值 
成功则返回0,否则为-1。 
函数库初始化
平台抽象API函数库通过使用Al InitLibrary()函数被初始化。在一个抽象API函数被调用之前,抽象函数库就被初始化一次。当AlCleanupLibrary()函数被调用时,由Al InitLibrary()获得并初始化的系统资源被释放。 
AlInitLibrary
描述 
运行函数库初始化。该函数将由MDoLibraryOpen()函数调用。 
原型 
int AlInitLibrary(void); 
参数 
无 
返回值 
成功则返回0,否则为-1。 
AlCleanupLibrary
描述 
释放由Al InitLibrary()函数获得的系统资源。该函数将由先前指定的 
MDoLibraryClose()函数调用。 
原型 
void AlCleanupLibrary(void); 
参数 
无 
返回值 
无 
出错函数
AL函数库包含了一套出错函数,该套函数用于设定并获取有关特定任务/线程的出错代码。抽象层实现者应负责设定适当的出错代码及组件代码。 
AlGetLastError
描述 
返回调用任务/线程的最后出错代码值。函数通过使用AlSetLastError()函数设定返 
回的值。 
AlErrorCode数据类型是使用一个32-位无符号值进行内部表达的数据类型。 
原型 
AlErrorCode AlGetLastError(void); 
参数 
无 
返回值 
调用线程/任务的最后出错值设定是通过使用AlSetLastError()函数完成的 
AlSetLastError
描述 
为调用线程/任务设定最后出错代码 
原型 
void AlSetLastError(AlErrorCode errorCode); 
参数 
errorCode 
[in]32-位出错代码值 
返回值 
无 
出错/状态代码
Figure G2004816984719951201D000361
Figure G2004816984719951201D000371
Figure G2004816984719951201D000381
上述的表格列出了一套AL组件及出错代码。一个使用AlSetLastError函数报告的出错是一个由组件代码与出错代码组合而形成的32-位的值。设定在AL层次的出错通过使用MDoGetLastError函数而获取,以方便在出错发生时采取适当的行动。 
堆内存分配
抽象层提供了一个堆内存分配API,以方便一个调用应用程序(例如″调用函数″)来动态地分配所需的内存。被分配的内存被假设为可在全局范围内共享,即可以由多个应用/任务所存取。AlMemAlloc()与AlMemFree()API函数提供了堆内存的分配与取消分配。 
函数 描述
void* AlMemAlloc(   unsigned     intuSize) 分配一块动态内存
void AlMemFree(   void*ptr) 使用AlMemAlloc释放被分配的内存
AlMemAlloc
描述 
分配一个指定量的动态内存并向该内存返回一个指针。被分配的内存块可直接由调用 
函数(即调用应用程序)所存取,而不需要一个特别的操作(即内存锁定)。 
原型 
void*AlMemAlloc(unsigned int uSize); 
参数 
uSize 
[in]以字节计算的需分配内存的量 
返回值 
一个指向被分配内存的指针。如请求失败或请求大小为零则返回NULL。 
也可参见 
AlMemFree() 
AlMemFree
描述 
释放由AlMemAlloc()函数返回的动态内存块 
原型 
void AlMemFree(void* pData); 
参数 
pData 
[in]指向一个需释放内存块的指针 
返回值 
无 
也可参见 
AlMemAlloc() 
永续性储存体I/O
永续性储存体(例如:闪存)存取是通过使用一个文件I/O API进行的。参见下文: 
  名称   描述
  AL_FILE_HANDLE AlFileOpen(      char             const*  pszFilename,int  iMode)   打开,如有必要则创建,特定的文件并返回其  句柄
  void AlFileClose(      AL_FILE_HANDLE_hFile)   关闭由AlFileOpen()返回的文件句柄
  unsigned int AlFileSeek(      AL_FILE_HANDLE_hFile)   重新定位文件偏移量
  Unsigned int AlFileRead(      AL_FILE_HANDLE hFile,     void*pBuffer,    unsigned int uSize)   从一个文件句柄读取
  unsigned int AlFileWrite(    AL_FILE_HANDLE hFile,    void const  * pBuffer,    unsigned int uSize)   向一个文件句柄写入
  int AlFileSetSize(    AL_FILE_HANDLE hFile,    unsigned int uSize)   调整文件大小
  int AlFileStat(    char const*pszFilename,    ALStatBuf*pStat)   获得文件信息
文件句柄类型AL_FILE_HANDLE被定义为: 
typedef struct AL_FILE_HANDLE_struct 
}   *AL_FILE_HANDLE; 
而一个用来指定一个无效的永续性储存体句柄INVALID_AL_FILE_HANDLE的常量被定义为: 
#define INVALID_AL_FILE_HANDLE((AL_FILE_HANDLE)0) 
文件状态缓冲区类型AlStatBuf被定义为 
typedef struct AlStatBuf_struct 
unsigned long ulsize; 
unsigned long ulTime; 
}AlStatBuf; 
AlFileOpen
描述 
打开指定的文件并返回其句柄。 
原型 
AL_FILE_HANDLE AlFileOpen(const char* pszFilename, 
            int   iMode); 
参数 
pszFilename 
[in]文件名/路径字符串 
iMode 
[in]文件存取模式 
AL_OPEN_READ        打开文件供读取 
AL_OPEN_WRITE    打开文件供读取与写入 
返回值 
如成功则返回文件句柄,否则为INVALID_AL_FILE_HANDLE。 
也可参见 
AlFileClose(),AlFileRead(),AlFileWrite() 
AlFileClose
描述 
关闭并释放与特定文件句柄相关联的系统资源 
原型 
void AlFileClose(AL_FILE_HANDLE hFile); 
参数 
hFile 
[in]由AlFileOpen()返回的文件句柄 
返回值 
无 
也可参见 
AlFileOpen(),AlFileRead(),AlFileWrite() 
AlFileSeek
描述 
重新定位读/写文件偏移量 
原型 
long AlFileSeek(AL_FILE_HANDLE_hFile, 
         long lOffset, 
         int    iWhence); 
参数 
hFile 
[in]一个打开文件句柄 
lOffset 
[in]与iWhence指示符有关的文件偏移量 
iWhence 
[in]初始位置。可能的值有: 
AL_SEEK_SET  偏移量参数指定绝对文件偏移量。换言之,自文件开始处的偏移 
             量。 
MJ_SEEK_CUR    指定相对偏移量-偏移量参数从当前文件偏移量指定文件偏 
               移量。 
AL_SEEK_END  从文件末尾指定文件偏移量。 
返回值 
如成功则返回文件偏移量,否则为-1L 
也可参见 
AlFileOpen(),AlFileClose(),AlFileRead(),AlFileWrite() 
AlFileRead
描述 
从一个文件读取一块数据 
原型 
unsigned int AlFileRead(AL_FILE_HANDLE hFile, 
          void*       pBuffer, 
          unsigned int uSize); 
参数 
hFile 
[in]一个打开文件句柄 
pBuffer 
[out]数据缓冲区 
uSize 
[out]需读取数据的量 
返回值 
如成功则返回读取的字节数,否则为-1 
也可参见 
AlFileOpen(),AlFileClose(),AlFileSeek(),AlFileWrite() 
AlFileWrite
描述 
向一个文件写入一块数据 
原型 
unsigned int AlFileWrite(AL_FILE_HANDLE hFile, 
          void const*   pBuffer, 
          unsigned int  uSize); 
参数 
hFile 
[in]一打开文件句柄 
pBuffer 
[int]存有需写入数据的缓冲区 
uSize 
[out]需写入数据的量 
返回值 
如成功则返回写入数据的量,否则为-1 
也可参见 
Al FileOpen(),AlFileClose(),AlFileSeek(),AlFileRead() 
AlFileSetSize
描述 
调整打开文件大小。 
对于不支持本地文件调整大小的平台,抽象函数库在AlFileClose()函数被调用时通过限定储存在每个文件开始处的大小信息执行该功能。 
原型 
unsigned int AlFileSetSize(AL_FILE_HANDLE hFile, 
          unsigned int uSize); 
参数 
hFile 
[in]引用一个带有写入模式的打开文件的句柄 
uSize 
[out]以字节计算的新文件的长度 
返回值 
如成功则返回0,否则为-1 
也可参见 
AlFileStat() 
AlFileStat
描述 
获取文件大小及创建时间戳。 
对于不提供本地文件大小和/或时间戳信息获取方法的平台,抽象函数库通过在每个文件的开始处储存信息执行本函数。 
原型 
int AlFileStat(char const* pszFilename, 
       AlStatBuf* pStat); 
参数 
pszFilename 
[in]获取信息的文件名称 
pStat 
[out]指向一个用于返回大小与时间戳信息结构的指针。该结构包含以下域: 
typedef struct AlStatBuf struct 
  unsigned long ulSize;  /*以字节计算的大小*/ 
  unsigned long ulTime; /*创建时间*/ 
}AlStatBuf; 
返回值 
如成功则返回0,否则为-1 
数据认证
平台抽象API包括一套用于认证数据的函数。数据认证API用于认证所下载的恶意软件的签字数据库。 
一旦调用函数通过使用AlDaOpen函数获得了一个认证对象,会对AlDaVerify作出一次调用,以核实所提供的数据。 
AlDaGetSignerlnfo()用于获取一个签字者信息。AlDaClose()用于关闭并释放数据认证句柄及相关的系统资源。以下是一个示范性的数据认证API 
  函数   描述
  AL_DA_HANDLE AlDaOpen(     const void       *pSig,     unsigned int uSigSize)   从一个给出的签名/证书中获得数据认  证句柄
  void AlDaClose(   AL_DA_HANDLE hHandle)   关闭通过使用AlDaOpen()获得的数据  认证句柄
  AlDaVerify(    AL_DA_HANDLE hDA,    int    (*pfRead)(void*,void    *,int),void *pPrivate)   数据认证函数。调用函数通过回调函数  提供一个数据获取方法
  int AlDaGetSignerlnfo(   AL_DA_HANDLE hDA,   DaSignerlnfo *pDSI)   获取签名者信息
由AlDaOpen()函数返回的数据认证句柄被定义为 
ALHANDLE(AL_DA_HANDLE); 
#define INVALID_AL_DA_HANDLE((AL_DA_HANDLE)0) 
签名者信息结构被定义为 
#define MAX_DA_SIGNER_NAME 128 
typedef struct DaSignerlnfo_struct 
char szSignerName[MAX_DA_SIGNER_NAME]; 
}DaSignerlnfo; 
AlDaOpen
描述 
创建并返回一个数据认证句柄。 
原型 
AL_DA_HANDLE AlDaOpen(const void* pSig, 
           unsigned int uSigSize); 
参数 
pSig 
[in]指向一个签名数据的指针 
uSigSize 
[in]以字节计算的签名大小 
返回值 
如成功则返回数据认证句柄,否则为INVALID_AL_DA_HAWDLE 
也可参见 
    AlDaClose(),AlDaUpdate(),AlDaVerify(), 
    AlDaGetSignerlnfo() 
AlDaClose
描述 
释放用于一个数据认证句柄的系统资源。 
原型 
void AlDaClose(AL_DA_HANDLE hDa); 
参数 
hDa 
[in]由AlDaOpen返回的数据认证句柄。 
返回值 
无 
也可参见 
AlDaOpen(),AlDaUpdate(),AlDaVerify(), 
AlDaGetSignerlnfo() 
AlDaVerify
描述 
运行数据认证 
原型 
intAlDaVerify(AL_DA_HANDLE hDa, 
    int(*pfRead)(void*,void*,int), 
    int iTotalSize, 
    void *pPrivate); 
参数 
hDa 
[in]数据认证句柄 
pfRead 
[in]调用函数的回调函数,用以读取数据(参见)。如有一个出错它会返回-1,如再无数据可读则返回0,否则返回所读取数据的量,并返回到AlDaVerify函数。预计该函数将被多次调用。 
iTotalSize 
[in]需核实的全部数据大小。 
pPrivate 
[in]由pfRead回调函数传递的调用函数的私有数据。 
返回值 
如应用数据得到认证则为0,否则为-1。 
也可参见 
AlDaOpen(),AlDaClose(),AlDaGetSignerlnfo() 
以下为一个样本数据读取的回调函数。 
  int ReadCallback(void*pPrivate,void*pData,int iSize)  {  .  .        return iDataRead;  }
AlDaGetSienerlnfo
描述 
获取数据认证签名者信息 
原型 
int AlDaGetSignerMo(ALJDAJHANDLE hDA, 
           DaSignerlnfo *pDSI); 
参数 
hDa 
[in]数据认证句柄 
pDSI 
[out]指向一个含有签名者信息的结构的指针 
返回值 
如成功获得签名者信息则返回0,否则为-1 
也可参见 
AlDaOpen(),AlDaClose(),AlDaVerify() 
同步对象
资源同步及控制是通过使用一个信标来达到的。抽象函数库内包括一套用以创建、打开、关闭并限定一个信标对象的函数。以下是一个示范性信标API。 
  函数   描述
  AL_SEM_HANDLE AlSemCreate(      char const* pszName)   创建一个被命名的信标并返回其句柄
  AL_SEM_HANDLE AlSemOpen(      char const* pszName)   返回一个句柄到一个现存的信标
  void AlSemClose(   关闭信标句柄;引用计数减少一位,且如果
  AL_SEM_HANDLE hHandle)   计数达到零则所引用的信标会被释放。
  int AlSemGet(     AL_SEM_HANDLE hHandle)   获得一个信标
  int AlSemRelease(     AL_SEM_HANDLE hHandle)   释放一个信标
AlSemCreate
描述 
创建一个被命名的信标,设定内部计数为零,并返回其句柄。 
原型 
AL_SEM_HANDLE AlSemCreate(char const* pszName); 
参数 
pszName 
[in]信标名称字符串 
返回值 
如成功则返回信标句柄,否则为INVALro_AL_SEM_HANDLE 
也可参见 
AlSemOpen(),AlSemClose(),AlSeraGet(),AlSemRelease() 
AlSemOpen
描述 
返回一个句柄至一个现存的信标。 
原型 
AL_SEM_HANDLE AlSemOpeh(char const* pszName); 
参数 
pszName 
[in]信标名称 
返回值 
如成功则返回信标句柄,否则为INVALID_AL_SEM_HANDLE 
也可参见 
AlSemCreate(),AlSemClose(),AlSemGet(),AlSemRelease() 
AlSemClose
描述 
关闭并释放与特定信标句柄相关联的系统资源。信标使用/引用计数也减少,且如计数达到零,被引用的信标对象会被销毁。 
原型 
void AlSemClose(AL_SEM_HANDLE hSem); 
参数 
hSem 
[in]使用AlSemCreate()or AlSemOpen()而获得的信标句柄 
返回值 
无 
也可参见 
AlSemCreate(),AlSemOpen(),AlSemGet(),AlSemRelease() 
AlSemGet
描述 
获得指定的信标。如进入时内部计数大于零,其数值会减少一位并立即被返回。如进入时内部计数为零,调用被阻止,直到其它任务/线程调用AlSemRelease()从而使之大于零。 
原型 
int AlSemGet(AL_SEM_HANDLE hSem); 
参数 
hSem 
[in]信标句柄 
返回值 
成功则返回0,否则为-1 
也可参见 
AlSemCreate(),AlSemOpen(),AlSemClose(),AlSemRelease() 
AlSemRelease
描述 
释放信标,内部计数增加1 
原型 
int AlSemRelease(AL_SEM_HANDLE hSem); 
参数 
hSem 
[in]信标句柄 
返回值 
成功则返回0,否则为-1 
也可参见 
AlSemCreate(),AlSemOpen(),AlSeraClose(),AlSemGet() 
HTTP API
抽象函数库内包括一套函数,该套函数能通过使用一个调用函数提供的回调结构提供HTTP网络I/O。以下是一个示范性的HTTP API。 
  函数   描述
  AL_HTTP_HANDLE AlHttpOpen(void)   创建并返回一个HTTP I/O句柄
  void AlHttpClose(     AL_HTTP_HANDLE hHandle)   关闭HTTP I/O句柄
  int AlHttpExec(     AL_HTTP_HANDLE hHandle,     char const* pszMethod,     char const* pszURL,     AlHttpCallbacks* pHttpCb,     void*pPrivate)   运行GET或PUT操作
由AlHttpOpen()函数返回的HTTP句柄被定义为: 
typedef struct AL_HTTP HANDLE_struct 
}*AL_HTTP_HANDLE; 
#define INVALID_AL_HTTP_HANDLE((ALJ3TTP_HANDLE)0) 
HTTP回调结构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回调结构中所给出的回调函数提供了以下各种功能: 
pWrite    由系统HTTP函数库调用,以储存收到的HTTP请求数据。 
pRead     用于获取申请数据,以便作为一个HTTP请求的一部分被发送。 
pGet Size 提供带申请者的内容数据大小的HTTP函数库,″Content-Length″。 
pSet Size 由HTTP函数库调用,以便在数据到位时向调用的应用程序通知收到的内容 
          数据的大小。 
AlHttpOpen
描述 
创建并向HTTP函数库返回一个句柄。 
原型 
AL_HTTP_HANDLE AlHttpOpen(void); 
参数 
无 
返回值 
如创建一个HTTP实例失败,则返回INVALID_AL_HTTP_HMTDLE 
也可参见 
AlHttpClose() 
AlHttpClose
描述 
关闭并释放与一个HTTP句柄相关联的系统资源。 
原型 
void AlHttpClose(AL_HTTP_HANDLE hHTTP); 
参数 
hHTTP 
[in]由AlHttpOpen()函数返回的HTTP函数库句柄。 
返回值 
无 
也可参见 
AlHttpClose() 
AlHttpExec
描述 
在指定的URL上执行一个HTTP方法(″GET″或″POST″),并带有可选择的文件头信息。 
原型 
intAlHttpExec(AL_HTTP_HANDLE       hHTTP, 
        char const*       pszMethod, 
        char const*       pszURL, 
        AlHttpCal lbacks* pHttpCb, 
        void*  pPrivate); 
参数 
hHTTP 
[in]由AlHttpOpen()函数返回的HTTP函数库句柄 
pszMethod 
[in]HTTP方法规格。HTTP″GET″或″POST″ 
pszURL 
[in]作出HTTP请求所在地址的URL 
pHttpCb 
[in]指向一套调用函数指定的HTTP I/O函数的指针。HTTP函数库使用在AlHttpCallbacks结构中指定的函数,以进行数据I/O 
pPrivate 
[in/out]指向一个调用函数数据的指针,该调用函数数据需传回在AlHttpCallbacks结构中指定的回调函数 
返回值 
成功则返回0,否则为-1 
也可参见 
AlHttpOpen(),AlHttpClose() 
共享内存
存放函数库的共享对象的系统内存地址是通过使用AlShmAddress()函数而得到的。该共享信息区域在设备启动时间被分配/准备,而且为函数库的不同实例所引用。 
AlShmAddress
描述 
返回共享内存地址。 
原型 
void*AlShmAddress(void); 
参数 
无 
返回值 
如成功则返回共享内存的地址,否则为NULL 
时间
AlTmGetCurrent()向调用函数提供以秒为单位的当前系统时间。 
AlTmGetCurrent
描述 
获得当前的系统时间。 
原型 
unsigned long AlTmGetCurrent(void); 
参数 
无 
返回值 
如成功,则返回自纪元(协调世界时00:00:00,1970年1月1日)以来的以秒为单位的时间。如出错,则返回((unsigned long)-1L)。 
设备信息
AlDevGet Info
描述 
获取设备的特定信息。由此函数返回的设备识别字符串被API使用。 
原型 
int AlDevGetInfo(AlDeviceInfo* pDeviceInfo); 
参数 
pDevicelnfo 
[out]指向设备信息的指针 
AlDevicelnfo结构被定义为 
#define AL_MAX_DEVICE_ID 32 
typedef struct AlDevicelnfo struct 
    char szDeviceID[AL_MAX_DEVICE_ID]; 
}AlDevicelnfo; 
识别字符串szDevicelD是一个独一无二的终端/设备识别码-它用来将一个特定的移动通信设备与所有其它的设备单独识别出来。此信息用于为移动通信设备构建一个恶意软件签名下载URL。它不能包含任何不允许在一个URL中出现的字符(即空格)。 
返回值 
成功则返回0,失败则为-1 
调试
AlDbgQutput
描述 
向一个调试控制台输出调试字符串。该函数是一个用于发布版本的零函数。 
原型 
int AlDbgOutput(char const* pszOutput); 
参数 
pszOutput 
[in]向调试控制台输出的字符串 
返回值 
成功则返回0,失败则为-1 

Claims (20)

1.一种利用移动通信设备扫描应用程序数据的系统,其特征在于包括:
一移动通信设备,在所述移动通信设备上安装有一应用程序,该应用程序可被改装,以利用所述移动通信设备执行任务;以及
配备于所述移动通信设备的一扫描子系统,其通过一应用程序接口及一同该扫描子系统相关的函数库与所述应用程序通信,用于扫描与所述应用程序所执行任务相关的应用数据;
其中所述应用程序将与所述应用数据相关的信息传输给扫描子系统,以便于由扫描子系统进行扫描;
所述应用程序及其任务为以下至少一种:所述应用程序包括邮件应用程序,其任务包括管理电子邮件;所述应用程序包括浏览应用程序,其任务包括浏览网络;所述应用程序包括电话薄应用程序,其任务包括管理多个电话号码;所述应用程序包括信息应用程序,其任务包括传输消息;
所述信息涉及不同类型的应用数据。
2.如权利要求1所述的系统,其特征在于,所述扫描包括按需病毒扫描。
3.如权利要求1所述的系统,其特征在于,所述扫描包括按访问病毒扫描。
4.如权利要求1所述的系统,其特征在于,所述应用程序包括Java应用程序。
5.如权利要求1所述的系统,其特征在于,所述移动通信设备包括蜂窝电话。
6.如权利要求1所述的系统,其特征在于,所述类型选自由超文本标记语言(HTML)类型、统一资源定位符(URL)类型、电子邮件类型、电话号码类型、java类型、文本类型以及未知类型组成的群组。
7.如权利要求1所述的系统,其特征在于,所述类型选自包括超文本标记语言(HTML)类型、统一资源定位符(URL)类型、电子邮件类型、电话号码类型、java类型、文本类型和未知类型的群组。
8.如权利要求1所述的系统,其特征在于,所述信息确认与每个所述应用数据类型相关联的格式。
9.如权利要求1所述的系统,其特征在于,所述信息包括与不同类型应用数据相关的变量。
10.如权利要求1所述的系统,其特征在于,所述信息显示所述扫描系统的扫描时间。
11.如权利要求10所述的系统,其特征在于,所述时间涉及应用数据的接收。
12.如权利要求10所述的系统,其特征在于,所述时间涉及应用数据的存储。 
13.如权利要求10所述的系统,其特征在于,所述时间涉及应用数据的提交。
14.如权利要求10所述的系统,其特征在于,所述时间涉及应用数据的调用。
15.如权利要求1所述的系统,其特征在于,所述信息显示所述扫描子系统所进行的扫描是否为可选。
16.如权利要求1所述的系统,其特征在于,所述信息显示所述扫描子系统所进行的扫描是否为强制。
17.如权利要求1所述的系统,其特征在于,所述信息改进所述扫描子系统的扫描时间。
18.如权利要求1所述的系统,其特征在于,所述信息改进所述扫描子系统扫描的准确性。
19.一种利用移动通信设备扫描应用程序数据的系统,其特征在于包括:
一移动通信设备,在所述移动通信设备上安装有一应用程序设备,它可以被改装,以利用所述移动通信设备执行任务;以及
配备于所述移动通信设备上的一扫描子系统设备,其通过一应用程序接口及一同该扫描子系统设备相关的函数库与所述应用程序设备通信,用于扫描与所述应用程序设备所执行的任务相关的应用数据;
其中所述应用程序设备将与所述应用数据相关的信息传输给所述扫描子系统设备,以便于由所述扫描子系统设备进行扫描;
所述应用程序及其任务为以下至少一种:所述应用程序包括邮件应用程序,其任务包括管理电子邮件;所述应用程序包括浏览应用程序,其任务包括浏览网络;所述应用程序包括电话薄应用程序,其任务包括管理多个电话号码;所述应用程序包括信息应用程序,其任务包括传输消息;
所述信息显示所述扫描系统的扫描时间。
20.一种利用移动通信设备扫描应用程序数据的方法,其特征在于包括:
利用一安装有应用程序的移动通信设备执行任务;和
利用一与所述应用程序通信的扫描子系统扫描与所述任务相关的应用数据;该扫描子系统是通过一应用程序接口及一同该扫描子系统相关的函数库与所述应用程序通信;
其中所述应用程序将与所述应用数据相关的信息传输给扫描子系统,以便于由扫描子系统进行扫描;
所述应用程序及其任务为以下至少一种:所述应用程序包括邮件应用程序,其任务包括管理电子邮件;所述应用程序包括浏览应用程序,其任务包括浏览网络;所述应用程序 包括电话薄应用程序,其任务包括管理多个电话号码;所述应用程序包括信息应用程序,其任务包括传输消息;
所述信息显示所述扫描系统的扫描时间。 
CN2004800169847A 2003-04-17 2004-04-05 利用移动通信设备进行内容/上下文相关扫描的系统、方法 Expired - Fee Related CN101248427B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US46385303P 2003-04-17 2003-04-17
US60/463,853 2003-04-17
US10/639,009 US6987963B2 (en) 2003-04-17 2003-08-11 System, method and computer program product for content/context sensitive scanning utilizing a mobile communication device
US10/639,009 2003-08-11
PCT/US2004/010570 WO2004095847A2 (en) 2003-04-17 2004-04-05 System, method and computer program product for content/context sensitive scanning utilizing a mobile communication device

Publications (2)

Publication Number Publication Date
CN101248427A CN101248427A (zh) 2008-08-20
CN101248427B true CN101248427B (zh) 2012-08-29

Family

ID=33162388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800169847A Expired - Fee Related CN101248427B (zh) 2003-04-17 2004-04-05 利用移动通信设备进行内容/上下文相关扫描的系统、方法

Country Status (8)

Country Link
US (1) US6987963B2 (zh)
EP (2) EP1639493B1 (zh)
JP (1) JP4597974B2 (zh)
KR (1) KR101120447B1 (zh)
CN (1) CN101248427B (zh)
CA (1) CA2517534C (zh)
NO (1) NO20055429L (zh)
WO (1) WO2004095847A2 (zh)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948135B1 (en) 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US6883168B1 (en) 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7191394B1 (en) 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7275216B2 (en) 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7296017B2 (en) 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US6908058B2 (en) * 2003-03-28 2005-06-21 Suncast Corporation Hose reel cart with elevated crank handle
US7392043B2 (en) * 2003-04-17 2008-06-24 Ntt Docomo, Inc. API system, method and computer program product for accessing content/security analysis functionality in a mobile communication framework
US7254811B2 (en) * 2003-04-17 2007-08-07 Ntt Docomo, Inc. Update system and method for updating a scanning subsystem in a mobile communication framework
US6970697B2 (en) * 2003-04-17 2005-11-29 Ntt Docomo, Inc. Platform-independent scanning subsystem API for use in a mobile communication framework
US9100431B2 (en) 2003-07-01 2015-08-04 Securityprofiling, Llc Computer program product and apparatus for multi-path remediation
US8984644B2 (en) 2003-07-01 2015-03-17 Securityprofiling, Llc Anti-vulnerability system, method, and computer program product
US9350752B2 (en) 2003-07-01 2016-05-24 Securityprofiling, Llc Anti-vulnerability system, method, and computer program product
US9118708B2 (en) 2003-07-01 2015-08-25 Securityprofiling, Llc Multi-path remediation
US9118711B2 (en) 2003-07-01 2015-08-25 Securityprofiling, Llc Anti-vulnerability system, method, and computer program product
US9118710B2 (en) 2003-07-01 2015-08-25 Securityprofiling, Llc System, method, and computer program product for reporting an occurrence in different manners
US9118709B2 (en) 2003-07-01 2015-08-25 Securityprofiling, Llc Anti-vulnerability system, method, and computer program product
US20070113272A2 (en) 2003-07-01 2007-05-17 Securityprofiling, Inc. Real-time vulnerability monitoring
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
US8839417B1 (en) * 2003-11-17 2014-09-16 Mcafee, Inc. Device, system and method for defending a computer network
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US20060015940A1 (en) * 2004-07-14 2006-01-19 Shay Zamir Method for detecting unwanted executables
US7591018B1 (en) * 2004-09-14 2009-09-15 Trend Micro Incorporated Portable antivirus device with solid state memory
US7692636B2 (en) 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US8487879B2 (en) 2004-10-29 2013-07-16 Microsoft Corporation Systems and methods for interacting with a computer through handwriting to a screen
US7712022B2 (en) 2004-11-15 2010-05-04 Microsoft Corporation Mutually exclusive options in electronic forms
DE102004063688A1 (de) * 2004-12-28 2006-07-13 Vodafone Holding Gmbh System und Verfahren zur Vermittlung von Daten zwischen einem Datenanbieter und einem Mobilfunkteilnehmer
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
KR100599084B1 (ko) * 2005-02-24 2006-07-12 삼성전자주식회사 이동 통신 네트워크에서의 바이러스 치료 방법
US7725834B2 (en) 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US20070094654A1 (en) * 2005-10-20 2007-04-26 Microsoft Corporation Updating rescue software
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US7634262B1 (en) * 2006-03-07 2009-12-15 Trend Micro, Inc. Virus pattern update for mobile device
MX2008012891A (es) 2006-04-06 2009-07-22 Smobile Systems Inc Sistema y metodo de deteccion de software dañino para plataformas moviles de acceso limitado.
US7975304B2 (en) * 2006-04-28 2011-07-05 Trend Micro Incorporated Portable storage device with stand-alone antivirus capability
US8990929B2 (en) * 2006-08-21 2015-03-24 Blackberry Limited Auditing application activities
US7934197B2 (en) * 2006-12-19 2011-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Maintaining code integrity in a central software development system
US20080287100A1 (en) * 2007-05-18 2008-11-20 Aol Llc Mobile account access through a data processing system
US7984455B2 (en) * 2007-05-30 2011-07-19 Sony Ericsson Mobile Communications Ab Enhanced native contact book application
US8607344B1 (en) 2008-07-24 2013-12-10 Mcafee, Inc. System, method, and computer program product for initiating a security action at an intermediate layer coupled between a library and an application
US9202049B1 (en) 2010-06-21 2015-12-01 Pulse Secure, Llc Detecting malware on mobile devices
CN101917476B (zh) * 2010-08-11 2014-06-25 开曼群岛威睿电通股份有限公司 超文本传输协议消息处理方法及其客户端系统
US8726338B2 (en) 2012-02-02 2014-05-13 Juniper Networks, Inc. Dynamic threat protection in mobile networks
TWI566566B (zh) * 2012-03-27 2017-01-11 群邁通訊股份有限公司 電話薄管理方法
CN103425928B (zh) * 2012-05-17 2017-11-24 富泰华工业(深圳)有限公司 电子装置的杀毒系统及方法
US9225739B2 (en) * 2013-06-26 2015-12-29 Microsoft Technology Licensing, Llc Providing user-specific malware assessment based on social interactions

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951698A (en) * 1996-10-02 1999-09-14 Trend Micro, Incorporated System, apparatus and method for the detection and removal of viruses in macros
US6269254B1 (en) * 1998-09-28 2001-07-31 Motorola, Inc. Radio communications device and method with API between user application program and telephony program and method
JP3256187B2 (ja) * 1998-11-11 2002-02-12 コナミ株式会社 ゲーム機
US6769120B1 (en) * 1999-06-30 2004-07-27 International Business Machines Corporation Calendar-induced program execution
US6351776B1 (en) * 1999-11-04 2002-02-26 Xdrive, Inc. Shared internet storage resource, user interface system, and method
EP1118949A1 (en) * 2000-01-21 2001-07-25 Hewlett-Packard Company, A Delaware Corporation Process and apparatus for allowing transaction between a user and a remote server
US6842861B1 (en) * 2000-03-24 2005-01-11 Networks Associates Technology, Inc. Method and system for detecting viruses on handheld computers
GB2366692B (en) * 2000-08-31 2002-08-14 F Secure Oyj Virus protection in an internet environment
US6650890B1 (en) * 2000-09-29 2003-11-18 Postini, Inc. Value-added electronic messaging services and transparent implementation thereof using intermediate server
US20020072347A1 (en) * 2000-12-07 2002-06-13 Dunko Greg A. System and method of receiving specific information at a mobile terminal
JP2002202939A (ja) * 2000-12-28 2002-07-19 Casio Comput Co Ltd 電子メール受信制御装置、電子メール受信制御方法及び電子メール受信制御プログラムを記録した記録媒体
US6907423B2 (en) * 2001-01-04 2005-06-14 Sun Microsystems, Inc. Search engine interface and method of controlling client searches
JP2002351686A (ja) * 2001-05-23 2002-12-06 Sony Corp データ処理方法及びデータ処理方法のプログラム
US7123933B2 (en) * 2001-05-31 2006-10-17 Orative Corporation System and method for remote application management of a wireless device
US6792543B2 (en) * 2001-08-01 2004-09-14 Networks Associates Technology, Inc. Virus scanning on thin client devices using programmable assembly language
US7096368B2 (en) * 2001-08-01 2006-08-22 Mcafee, Inc. Platform abstraction layer for a wireless malware scanning engine
GB2378783B (en) * 2001-08-17 2004-12-29 F Secure Oyj Preventing virus infection in a computer system
US7210168B2 (en) * 2001-10-15 2007-04-24 Mcafee, Inc. Updating malware definition data for mobile data processing devices
US7216367B2 (en) * 2003-02-21 2007-05-08 Symantec Corporation Safe memory scanning

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
全文.

Also Published As

Publication number Publication date
NO20055429D0 (no) 2005-11-16
EP1639493A2 (en) 2006-03-29
EP1639493B1 (en) 2016-06-01
CA2517534C (en) 2012-06-05
KR101120447B1 (ko) 2012-02-29
EP1639493A4 (en) 2009-09-09
US20040210645A1 (en) 2004-10-21
JP2007524902A (ja) 2007-08-30
JP4597974B2 (ja) 2010-12-15
EP3062234A1 (en) 2016-08-31
KR20060009257A (ko) 2006-01-31
WO2004095847A2 (en) 2004-11-04
EP3062234B1 (en) 2017-05-17
NO20055429L (no) 2006-01-10
WO2004095847A3 (en) 2005-05-19
CN101248427A (zh) 2008-08-20
CA2517534A1 (en) 2004-11-04
US6987963B2 (en) 2006-01-17

Similar Documents

Publication Publication Date Title
CN101248427B (zh) 利用移动通信设备进行内容/上下文相关扫描的系统、方法
CN1939042B (zh) 用于移动通信框架内的独立平台扫描子系统应用程序接口
CA2517485C (en) Api system, method and computer program product for accessing content/security analysis functionality in a mobile communication framework
JP4448849B2 (ja) 移動通信フレームワークにおいてスキャニングサブシステムを更新するための更新システム及び方法
CN101714201B (zh) 代码签字系统及方法
CN105607935B (zh) 应用程序更新方法及其终端、服务器
US20030066059A1 (en) Method for executing java application midlet using communication among java applications
CN100524211C (zh) 在移动通信框架内用于更新扫描子系统的更新系统与方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120829

CF01 Termination of patent right due to non-payment of annual fee