一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对系统调用进行拦截替换的方法和装置、电子设备和介质与流程

2021-11-27 00:13:00 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,更具体地,涉及一种用于对系统调用进行拦截替换的方法、一种用于对系统调用进行拦截替换的装置、一种电子设备、一种计算机可读存储介质和一种计算机程序产品。


背景技术:

2.计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源,进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用。linux等系统的内核提供有一组用于实现各种系统功能的接口,应用程序通过该组接口对系统功能进行调用。
3.在一些场景下,需要对系统调用进行拦截替换,例如,在应用程序调用系统功能之前需要先对应用程序的行为进行安全检测,因此,需要拦截下对系统的调用,并将对系统功能的调用替换为对安全软件的调用,利用安全软件对应用程序的行为进行检测。
4.在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:
5.linux系统对系统调用的方式进行了改进,引入了syscall_wrapper(系统调用封装)机制,将系统调用的参数以特定的数据结构进行封装,以适用不同处理器指令体系下的系统调用。但是,在开启syscall_wrapper机制后,在执行系统调用的拦截替换时,若采用之前(未开启syscall_wrapper机制情况下)的拦截替换方式会导致参数无法匹配的问题,进而会引起程序异常,严重时还会出现崩溃、死机等情况。


技术实现要素:

6.有鉴于此,本公开提供了一种用于对系统调用进行拦截替换的方法、一种用于对系统调用进行拦截替换的装置、一种电子设备、一种计算机可读存储介质和一种计算机程序产品。
7.本公开的一个方面提供了一种用于对系统调用进行拦截替换的方法,包括:采用目标定义方式,对一个或多个替换函数进行定义,其中,所述目标定义方式包括系统函数的定义方式,所述系统函数的定义方式中的参数类型为以目标数据结构封装的结构体参数;以及更改系统调用表,所述更改系统调用表包括:将原有系统调用表中的预定系统函数的信息替换为所述一个或多个替换函数中与所述预定系统函数对应的替换函数的信息。
8.根据本公开的实施例,所述方法还包括:获取调用参数,并将所述调用参数以所述目标数据结构进行封装,形成结构体参数;从所述已更改的系统调用表中获取与所述结构体参数对应的替换函数的信息;以及基于所述结构体参数和所述替换函数的信息,调用并执行所述替换函数。
9.根据本公开的实施例,所述方法还包括:在预定情况下,对所述调用参数进行修改,其中,所述对所述调用参数进行修改包括:调用目标函数对所述结构体参数进行修改。
10.根据本公开的实施例,所述预定情况包括:所述调用参数对应的文件为加密文件的情况,所述对所述调用参数进行修改包括:将所述加密文件的路径信息修改为与所述加密文件对应的解密文件的路径信息。
11.根据本公开的实施例,所述方法还包括:在所述更改系统调用表之前,关闭写保护功能。
12.本公开的另一个方面提供了一种用于对系统调用进行拦截替换的装置,包括内核模块,所述内核模块包括:定义子模块,用于采用目标定义方式,对一个或多个替换函数进行定义,其中,所述目标定义方式包括系统函数的定义方式,所述系统函数的定义方式中的参数类型为以目标数据结构封装的结构体参数;以及更改子模块,用于更改系统调用表,所述更改系统调用表包括:将原有系统调用表中的预定系统函数的信息替换为所述一个或多个替换函数中与所述预定系统函数对应的替换函数的信息。
13.根据本公开的实施例,所述内核模块还包括:参数获取子模块,用于获取调用参数,并将所述调用参数以所述目标数据结构进行封装,形成结构体参数;信息获取子模块,从所述已更改的系统调用表中获取与所述结构体参数对应的替换函数的信息;以及调用子模块,用于基于所述结构体参数和所述替换函数的信息,调用并执行所述替换函数。
14.本公开的另一个方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
15.本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
16.本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
17.本公开的另一方面提供了一种计算机程序产品,包括计算机可读指令,其中,所述计算机可读指令被执行时用于执行如上所述的方法。
18.根据本公开实施例的方法,将替换函数以与系统函数相同的方式进行定义,这样,在进行系统调用的拦截替换时,可以使替换函数的定义与系统调用参数的形式相匹配,进而使替换函数能够正常运行。因此,本公开实施例的方法至少部分地克服了相关技术中系统调用的拦截替换方式造成系统异常的技术问题,进而达到了能够使对系统调用的拦截替换能够正常执行、保证系统正常运行的技术效果,并且本公开实施例的方法逻辑简单,易于实施。
附图说明
19.通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
20.图1示意性示出了根据本公开实施例的可以应用用于对系统调用进行拦截替换的方法的示例性应用场景;
21.图2示意性示出了根据本公开实施例的用于对系统调用进行拦截替换的方法的流程图;
22.图3示意性示出了根据本公开另一实施例的用于对系统调用进行拦截替换的方法
的流程图;
23.图4示意性示出了根据本公开实施例的用于对系统调用进行拦截替换的装置的框图;
24.图5示意性示出了根据本公开另一实施例的用于对系统调用进行拦截替换的装置的框图;以及
25.图6示意性示出了根据本公开实施例的适于实现用于对系统调用进行拦截替换的方法的电子设备的框图。
具体实施方式
26.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
27.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
28.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
29.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
30.本公开的实施例提供了一种用于对系统调用进行拦截替换的方法,包括:采用目标定义方式,对一个或多个替换函数进行定义,其中,目标定义方式包括系统函数的定义方式,系统函数的定义方式中的参数类型为以目标数据结构封装的结构体参数。更改系统调用表,更改系统调用表包括:将原有系统调用表中的预定系统函数的信息替换为一个或多个替换函数中与预定系统函数对应的替换函数的信息。
31.图1示意性示出了根据本公开实施例的可以应用用于对系统调用进行拦截替换的方法的示例性应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
32.如图1所示,在应用程序调用内核功能模块的过程中,通过本公开实施例的方法可以对系统调用进行拦截,并将对系统功能模块的调用替换为对第三程序的调用,其中,第三程序例如可以是安全软件。第三程序可以对应用程序的调用行为进行分析,例如,安全软件
可以分析判断该调用行为是安全的还是恶意的,若该调用行为是安全的,则可以放行,使应用程序能够继续调用内核功能模块,若该调用行为是恶意的,则可以拦截下调用行为,使应用程序不能继续调用内核功能模块,以此实现一些高级防护功能。在本公开实施例中,系统功能模块对应的函数可以称为系统函数,第三程序对应的函数可以称为替换函数。
33.在对系统调用拦截替换的过程中,需要先获取系统调用的参数,例如,对于新建、文件写入等操作,需要获取文件的大小、名称、类型等信息。在采用syscall_wrapper机制后,系统调用的参数以特定的数据结构进行封装,在执行系统调用的拦截替换时,若采用之前的拦截替换方式会导致在调用替换函数时参数无法匹配而引起异常,进而会引起程序异常,严重时还会出现崩溃、死机等情况。
34.根据本公开实施例的方法,将替换函数以与系统函数相同的方式进行定义,这样,在进行系统调用的拦截替换时,可以使替换函数正常执行。
35.图2示意性示出了根据本公开实施例的用于对系统调用进行拦截替换的方法的流程图。
36.如图2所示,该方法包括操作s210~s220。
37.在操作s210,采用目标定义方式,对一个或多个替换函数进行定义,其中,目标定义方式包括系统函数的定义方式,系统函数的定义方式中的参数类型为以目标数据结构封装的结构体参数。也就是说,可以采用与系统函数相同的定义方式,对一个或多个替换函数进行定义。其中,系统函数可以是指系统内核提供的函数,系统函数用于实现各种系统功能,系统函数也可以称为内核函数。替换函数可以是指用于对系统函数进行替换的函数。
38.例如,在应用程序进行系统调用过程中,应用程序会向内核发送系统调用参数,并且对应于不同的系统功能,参数的类型也不相同,例如,对应于“写入”的系统功能(sys_write),参数可以包括文件描述符、字符串写入位置、字符串长度等参数和调用编号。
39.系统调用的参数采用了以目标数据结构封装的结构体参数,目标数据结构例如是指struct pt_regs结构,该结构本身是根据不同处理器平台“寄存器”格式进行的封装,以x64为例,struct pt_regs结构可以为如下形式:
40.struct pt_regs{
41.unsigned long r15;
42.unsigned long r14;
43.unsigned long r13;
44.unsigned long r12;
45.unsigned long rbp;
46.unsigned long rbx;
47.unsigned long r11;
48.unsigned long r10;
49.unsigned long r9;
50.unsigned long r8;
51.unsigned long rax;
52.unsigned long rcx;
53.unsigned long rdx;
54.unsigned long rsi;
55.unsigned long rdi;
56.unsigned long orig_rax;
57.unsigned long rip;
58.unsigned long cs;
59.unsigned long eflags;
60.unsigned long rsp;
61.unsigned long ss;
62.};
63.可见,struct pt_regs结构包括多个结构体成员,每个结构体成员都用于存放一个cpu寄存器的值,而寄存器的值对应的就是系统调用的参数,例如,在x64平台上,寄存器rbx存放的可以是第一个系统调用参数的值,寄存器rsi存放的可以是第二个系统调用参数的值。在不同的平台上,系统调用参数使用的结构体成员也不相同,在每种平台上,系统调用参数并没有使用struct pt_regs结构体的全部成员,以x64平台为例,使用了其中的rdi、rsi、rdx、r10、r8、r9这几个结构体成员。
64.由于系统参数以目标数据结构进行了封装,因此,也需要对系统函数的定义进行“封装”,以与系统调用参数的形式相匹配。以“打开”的系统功能(sys_openat)为例,其形式可以如下所示(以x86_64处理器体系的sys_openat系统调用为例):
65.asmlinkage long_x64_sys_openat(const struct pt_regs*regs)
66.在该系统函数的定义中,参数类型是struct pt_regs结构、返回值是asmlinkage long。
67.根据本公开的实施例,为了使替换函数能够正常运行,可以将若干个替换函数均以与系统函数相同的定义方式进行定义,并进行声明。
68.例如,若要替换sys_openat系统调用,可以预先定义一个如下形式的替换函数:
69.asmlinkage long hook_sys_openat(struct pt_regs*regs)
70.该替换函数的参数类型是struct pt_regs,返回值是asmlinkage long。
71.在操作s220,更改系统调用表,更改系统调用表包括:将原有系统调用表中的预定系统函数的信息替换为一个或多个替换函数中与预定系统函数对应的替换函数的信息。
72.例如,系统调用表是一张由指向实现各种系统调用的系统函数的函数指针组成的表,该表可以基于系统调用编号进行索引,来定位函数地址,完成系统调用。其中,每种系统调用均对应一个调用编号,例如,sys_read(读取)的系统调用对应的调用编号例如是“0”、sys_write(写入)的系统调用对应的调用编号例如是“1”、sys_open(打开)的系统调用对应的调用编号例如是“2”。在系统调用表中,每个调用编号可以对应一个实现相应功能的函数的函数地址。
73.为了实现对系统调用的拦截替换,可以对系统调用表进行更改,修改系统调用表中相应元素的元素值,例如,若要拦截替换对sys_read(读取)的系统调用,则可以将系统调用表中将sys_read函数的信息改为对应的替换函数的信息,例如将sys_read函数的地址改为相应的替换函数的地址。
74.本公开实施例的方法可以由内核模块执行,例如,可以在内核中创建一个内核模
块,并根据本公开实施例的方法对该内核模块进行编译,以使该内核模块能够实现本公开实施例的方法。
75.根据本公开实施例的方法,将替换函数以与系统函数相同的方式进行定义,使替换函数的声明和定义与系统调用封装机制下的系统函数的声明和定义一致,这样,在进行系统调用的拦截替换时,可以使替换函数的定义与系统调用参数的形式相匹配,进而使替换函数能够正常运行。因此,本公开实施例的方法至少部分地克服了相关技术中系统调用的拦截替换方式造成系统异常的技术问题,进而达到了能够使对系统调用的拦截替换能够正常执行、保证系统正常运行的技术效果,并且本公开实施例的方法逻辑简单,易于实施。
76.根据本公开的实施例,用于对系统调用进行拦截替换的方法还可以包括:在更改系统调用表之前,关闭写保护功能。
77.在操作s220对系统调用表进行修改之前,需要先关闭系统的写保护功能。例如,在x86平台上可以通过关闭cr0寄存器的写保护位来实现关闭写保护功能的目的。
78.图3示意性示出了根据本公开另一实施例的用于对系统调用进行拦截替换的方法的流程图。
79.如图3所示,根据本公开的实施例,该方法还可以包括操作s310~操作s330。根据操作s310~操作s330可以实现对正在进行的系统调用的拦截替换。
80.在操作s310,获取调用参数,并将调用参数以目标数据结构进行封装,形成结构体参数。
81.例如,在进行系统调用时,对应的系统调用参数是放到相应的寄存器中的,需要先将相应的参数从寄存器中取出,然后组织成struct pt_regs结构,再以该结构为参数进行系统调用。
82.其中,将参数组织成struct pt_regs结构可以是指:根据相应参数的值赋值给struct pt_regs结构中相应的成员。
83.在操作s320,从已更改的系统调用表中获取与结构体参数对应的替换函数的信息。
84.例如,结构体参数中可以包括调用编号,若调用编号对应的系统函数已被替换,则在查询系统调用表时,可以从已更改的系统调用表中获取与调用编号对应的替换函数的信息,例如,可以获取替换函数的地址信息。
85.在操作s330,基于结构体参数和替换函数的信息,调用并执行替换函数。
86.获取结构体参数,调用替换函数,并根据结构体参数执行替换函数,例如,在替换函数为安全软件对应的函数的情况下,替换函数可以对结构体参数进行分析检测。由于替换函数的函数定义与参数的形式相匹配,因此,替换函数能够正常运行。
87.通过本公开实施例的方法对替换函数进行定义并更改系统调用表之后,即实现对系统调用进行拦截替换的功能。在此之后,任一应用程序进行系统调用时,均可以通过操作s310~操作s330实现对正在进行的系统调用的实时拦截替换,并且对系统调用进行实时拦截替换的操作简单,响应速度快,且不受其他因素的影响,具有稳定性。
88.根据本公开的实施例,用于对系统调用进行拦截替换的方法还可以包括:在预定情况下,对调用参数进行修改。其中,对调用参数进行修改包括:调用目标函数对结构体参数进行修改。
89.例如,在一些预定情况下,除了能够对系统调用进行拦截替换外,还要求能够在运行时修改系统调用参数,以便实现一些特殊的目的。
90.根据本公开的实施例,预定情况可以包括:调用参数对应的文件为加密文件的情况。对调用参数进行修改包括:将加密文件的路径信息修改为与加密文件对应的解密文件的路径信息。
91.在本公开实施例中,在一些保密软件中,文件是做过加密的,需要在打开文件(一般使用sys_openat系统调用功能)时做特殊处理,例如,用户要打开加密文件a,会先对加密文件a进行解密得到非加密文件b,然后再将系统调用参数中的加密文件a的文件路径修改/替换为非加密文件b的文件路径。
92.在对调用参数进行修改时,若直接替换相应的系统调用参数,需要修改struct pt_regs结构体参数,否则会导致调用直接失败,对整个操作系统的行为产生异常影响,甚至会导致一些应用程序无法正常工作,严重时还会出现崩溃、死机等问题。但是若要对struct pt_regs结构体参数直接进行修改,同样会导致调用失败,这是由于该结构体在不同平台上的实现是有差异的,并且由于涉及到其他功能也要使用该系统调用参数,直接修改会导致其他功能模块受影响,导致异常情况。
93.根据本公开的实施例,可以通过调用目标函数对结构体参数进行修改。目标函数例如可以是系统内核提供的syscall_set_arguments函数,通过这个函数可以设置struct pt_regs成员的值:
94.void syscall_set_arguments(struct task_struct*task,struct pt_regs*regs,unsigned int i,unsigned int n,const unsigned long*args);
95.因此,如果要修改系统调用参数,不能直接替换相应的系统调用参数,而是需要修改相应的struct pt_regs结构体参数,并且修改时要通过内核提供的接口函数syscall_set_arguments实现,否则一定会导致整个系统调用失败。struct pt_regs结构在不同平台上的实现差异很大,若调用syscall_set_arguments来修改,内核在实现该函数时已经处理了不同平台的差异,因此,调用syscall_set_arguments来修改struct pt_regs结构体参数,可以避免产生参数修改过程中产生的异常情况,顺利实现系统调用参数的修改和替换。
96.本公开的另一个方面提供了一种用于对系统调用进行拦截替换的装置。
97.图4示意性示出了根据本公开实施例的用于对系统调用进行拦截替换的装置的框图。
98.如图4所示,该装置包括内核模块400,内核模块400包括定义子模块410和更改子模块420。
99.定义子模块410用于采用目标定义方式,对一个或多个替换函数进行定义,其中,目标定义方式包括系统函数的定义方式,系统函数的定义方式中的参数类型为以目标数据结构封装的结构体参数。
100.更改子模块420用于更改系统调用表,更改系统调用表包括:将原有系统调用表中的预定系统函数的信息替换为一个或多个替换函数中与预定系统函数对应的替换函数的信息。
101.图5示意性示出了根据本公开另一实施例的用于对系统调用进行拦截替换的装置的框图。
102.如图5所示,根据本公开的实施例,用于对系统调用进行拦截替换的装置还可以包括参数获取子模块510、信息获取子模块520和调用子模块530。
103.参数获取子模块510用于获取调用参数,并将调用参数以目标数据结构进行封装,形成结构体参数。
104.信息获取子模块520从已更改的系统调用表中获取与结构体参数对应的替换函数的信息。
105.调用子模块530用于基于结构体参数和替换函数的信息,调用并执行替换函数。
106.根据本公开的实施例,内核模块还可以包括修改子模块,修改子模块用于在预定情况下,对调用参数进行修改。其中,对调用参数进行修改包括:调用目标函数对结构体参数进行修改。
107.根据本公开的实施例,预定情况包括:调用参数对应的文件为加密文件的情况。对调用参数进行修改包括:将加密文件的路径信息修改为与加密文件对应的解密文件的路径信息。
108.根据本公开的实施例,内核模块还可以包括关闭子模块,关闭子模块用于在更改系统调用表之前,关闭写保护功能。
109.根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
110.例如,内核模块400、定义子模块410、更改子模块420、参数获取子模块510、信息获取子模块520、调用子模块530、修改子模块和关闭子模块中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,内核模块400、定义子模块410、更改子模块420、参数获取子模块510、信息获取子模块520、调用子模块530、修改子模块和关闭子模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,内核模块400、定义子模块410、更改子模块420、参数获取子模块510、信息获取子模块520、调用子模块530、修改子模块和关闭子模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
111.需要说明的是,本公开的实施例中用于对系统调用进行拦截替换的装置部分与本
公开的实施例中用于对系统调用进行拦截替换的方法部分是相对应的,用于对系统调用进行拦截替换的装置部分的描述具体参考用于对系统调用进行拦截替换的方法部分,在此不再赘述。
112.图6示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
113.如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
114.在ram603中,存储有电子设备600操作所需的各种程序和数据。处理器601、rom602以及ram603通过总线604彼此相连。处理器601通过执行rom602和/或ram603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom602和ram603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
115.根据本公开的实施例,电子设备600还可以包括输入/输出(i/o)接口605,输入/输出(i/o)接口605也连接至总线604。电子设备600还可以包括连接至i/o接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
116.根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
117.本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
118.根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光
存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
119.例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom602和/或ram603和/或rom602和ram603以外的一个或多个存储器。
120.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
121.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
122.以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献