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

一种应用程序的执行方法及处理器与流程

2022-02-22 18:31:17 来源:中国专利 TAG:


1.本说明书实施例属于计算机技术领域,尤其涉及一种应用程序的执行方法及处理器。


背景技术:

2.计算设备中的处理器通常会提供多种级别的特权级来供操作系统进行选择性使用。例如linux操作系统通常使用处理器提供的最低特权级来运行用户态,使用处理器提供的最高特权级来运行内核态。其中对于能够被处理器直接执行的机器指令而言,可能造成较大安全风险的机器指令通常仅允许在内核态执行而不允许在用户态执行,但是仍然存在部分允许在用户态执行的机器指令被用户赋予了权限控制含义,用户可能并不期望这样的指令被滥用。


技术实现要素:

3.本发明的目的在于提供一种应用程序的执行方法及处理器。
4.第一方面,提供了一种应用程序的执行方法,所述应用程序中包括第一指令,所述方法由处理器执行,所述处理器中包括与第一指令对应的第一寄存器。所述方法包括:获取所述应用程序中与所述第一指令对应的第一数据;从所述第一寄存器中读取第二数据;根据所述第一数据和所述第二数据确定是否执行所述第一指令。
5.第二方面,提供了一种处理器,包括运算器和第一寄存器,所述第一寄存器对应应用程序中包括的第一指令,所述运算器配置为:获取所述应用程序中与所述第一指令对应的第一数据;从所述第一寄存器中读取第二数据;根据所述第一数据和所述第二数据确定是否执行所述第一指令。
6.第三方面,提供了一种计算设备,包括第二方面中所述的处理器。
7.上述实施例中,处理器可以基于应用程序中与第一指令对应的第一数据,以及处理器中与第一指令对应的第一寄存器所存储的第二数据,决策是否执行该应用程序中的第一指令,从而实现对第一指令进行受控使用,避免第一指令在应用程序中被恶意执行而造成安全风险。
附图说明
8.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
9.图1为本说明书实施例中示例性提供的业务场景的示意图;
10.图2为本说明书实施例中提供的一种初始化应用程序的方法的流程图;
11.图3为本说明书实施例中示例性提供的应用程序的示意图;
的动作失效。
18.前文示例性描述了特权指令可以包括native合约中可能使用的wrpkru指令,以及示例性描述了在用户态来执行wrpkru指令时可能造成的安全风险。然而可以理解的是,特权指令还可以包括其它机器指令,应用场景可以包括除采用intel mpk机制的区块链平台以外的其它场景,安全风险可以是除内存页面被不可信实体恶意访问的其它风险。
19.在一种可能的实施方式中,可以在处理器执行包含native合约在内的不可信实体时,对不可信实体进行二进制扫描以发现其包括的特权指令,按照相应策略对特权指令及其关联的其它机器指令进行变换以得到修改后的不可信实体,使得修改后的不可信实体中不再包含特权指令,避免处理器执行不可信实体的过程中,发生在用户态执行特权指令而造成安全风险。然而该种实施方式中涉及到对全部不可信实体进行二进制扫描,技术复杂度极高、影响应用程序的执行效率而且可能导致修改后的不可信实体无法完成某些预定事务。
20.鉴于以上问题,本说明书实施例中至少提供了一种应用程序的执行方法及处理器。该处理器中包括与第一指令相对应的第一寄存器,其中该第一指令属于特权指令。处理器可以基于应用程序中与第一指令对应的第一数据,以及第一寄存器中存储的第二数据,决策是否执行该应用程序中的第一指令,从而实现对应用程序中的第一指令进行受控使用,避免第一指令在应用程序中被恶意执行而造成安全风险。此外,无需在执行应用程序的过程中花费过多的时间对应用程序进行自修改、确保应用程序能够完成开发者期望其完成的预定事务,不会对应用程序的执行效率造成影响而且技术复杂度相对较低。
21.图2为本说明书实施例中提供的一种初始化应用程序的方法的流程图。其中,该应用程序中包括被开发者允许使用的并且属于特权指令的第一指令。该方法具体可以由处理器执行,该处理器中包括与第一指令对应的第一寄存器。该处理器具体可以对该应用程序中包括的特定功能模块(即第一程序段)进行执行,从而完成执行如图2所示方法。换而言之,当应用程序的开发者允许在应用程序的某个功能模块(即第二程序段)中正常使用第一指令时,该开发者可以在该应用程序中提供特定功能模块,并且确保处理器执行该应用程序时,处理器会首先对该特定功能模块进行执行以完成如图2所示的方法。与之相应的,图2所示的初始化应用程序的方法,也可以表述为应用程序自身进行初始化的过程。如图2所示,该方法包括如下步骤201-步骤205中的部分或全部:
22.步骤201,获取业务数据。其中该业务数据可以是处理器初始化应用程序的过程中生成的随机数,例如是处理器通过对应用程序提供的特定功能模块进行执行而生成的随机数。
23.步骤203,将业务数据作为与第一指令对应的第一数据写入应用程序,并将业务数据写入处理器中与特权指令对应的第一寄存器。第一寄存器中的业务数据也可以被表述为第二数据。
24.在一个较为具体的示例中,当应用程序的开发者允许在该应用程序包括的第二程序段中正常使用属于特权指令的第一指令时,开发者可以在第二程序段中预留用于存放该第一指令对应的第一数据的目标指令。与之相应的,处理器具体可以通过执行第一程序段,完成将其获取的业务数据作为与第一指令对应的第一数据写入第二程序段中的目标指令。其中对于前述的目标指令,其可以位于其对应的第一指令之前并且与该第一指令相邻,用
于获取作为立即数的第一数据到特定存储单元,该特定存储单元可以为通用寄存器或者规定的特定寄存器;例如目标指令可以为“mov r,eh”,其中r表征处理器中除第一寄存器以外的某个通用寄存器,e表征由处理器执行第一程序段而写入该目标指令的第一数据。
25.在一个较为具体的示例中,处理器具体可以通过在用户态来执行第二指令,完成将业务数据作为第二数据写入第一寄存器。例如,处理器具体可以通过对应用程序的第一程序段中的第二指令进行执行,实现将其获取的业务数据作为第二数据写入第一寄存器。
26.由于第一寄存器为与第一指令对应的非通用寄存器,前述用于访问第一寄存器的第二指令实质上同样具有权限管理性质。如果针对第一指令和第二指令采用相同的方法实现对第一指令和第二指令进行受控使用,则可能需要在处理器中配置与该第二指令相对应的非通用寄存器,从而进入了无休止的循环。因此为了避免出现这种情况,具体可以将该第二指令设置为在以下任一情况下被允许执行:处理器在当前时刻所处的特权级,大于用户态的特权级;第一寄存器中存储有预设数值;第二指令对应的第二寄存器中存储的数据与存储于第一寄存器中的数据相同,第二寄存器中存储的数据由位于第二指令之前的指令流设置,例如位于第二指令之前的指令流中包括指令“mov p,fh”,处理器在执行指令“mov p,fh”时可以将数据f写入第二寄存器p,处理器在执行到第二指令时则可判断第二寄存器p中的数据f与第一寄存器中存储的当前数据是否相同,在相同的情况下才执行该第二指令。其中第一寄存器中存储有预设数值时,表征第一寄存器在当前时刻未被应用程序使用,即表征处理器在当前时刻并未执行使用第一寄存器的任务。
27.更具体地,关于第一寄存器的访问,其可以分为读访问和写访问。用于实现对第一寄存器进行读访问的机器指令,至少支持在高于用户态的特权级(即在特权模式)下被无条件执行。用于实现对第一寄存器进行写访问的机器指令有多种控制方式,其相同于前述第二指令被允许执行的各种情况。此外第一寄存器还可以不支持读访问,只支持写访问。
28.总而言之,针对第一寄存器的设计除了可以避免发生前述的循环外,还需要能够支持“任务切换”,确保系统内核可以利用针对第一寄存器进行的设计来在任务切换时对第一寄存器中存储的数据进行保存和恢复。例如,当处理器基于外设中断或者其它特定条件,从任务a(即运行应用程序a)切换到任务b(即运行应用程序b)时,通常需要利用操作系统的系统内核进行任务切换;系统内核运行在内核态,即处理器从任务a切换到任务b的过程中,处理器处于处理器提供的最高特权级,其大于运行在用户态的应用程序a对应的处理器提供的最低特权级。此时,具体可以由系统内核通过相应指令来读取第一寄存器中与任务a对应的第二数据并对其进行记录;当处理器从任务b重新切换到任务a时,可以由系统内核将第一寄存器中存储的与任务b相对应的第二数据,重写为由系统内核记录的并且与任务a对应的第二数据。
29.继续以应用程序时是包括native合约的区块链平台为例。请参考图3,对于包括native合约的区块链平台,开发者允许在区块链平台包括的功能模块b1中正常使用wrpkru指令,不允许在native合约中恶意使用wrpkru指令。该区块链平台的开发者可以于功能模块b1的指令序列中预留目标指令,目标指令例如为位于wrpkru指令之前并且与wrpkru指令相邻的“mov r,eh”。此外该区块链平台的开发者还可以在区块链平台中提供功能模块b0,以便在该区块链平台自身进行初始化的过程中,处理器可以通过执行功能模块b0向目标指令“mov r,eh”中写入随机数作为第一数据,并且具体通过功能模块b0中的第二指令“wrpkcr”向第一寄存器中写入该随机数作为第二数据;其中位于“wrpkcr”之前的指令流可以向第二指令对应的第二寄存器中写入存储于所述第一寄存器中的当前数据f,例如位于第二指令之前的指令流中包括指令“mov p,fh”,当处理器在执行指令“mov p,fh”时会将数据f写入第二寄存器p,处理器在执行到第二指令时则可判断第二寄存器p中的数据f与第一寄存器中存储的当前数据是否相同,在相同的情况下才执行该第二指令。更具体地,在该区块链平台自身开始进行初始化时,即处理器开始执行功能模块b0时,需要退出或暂停对其它可能包含第一指令的应用程序的执行过程,系统内核可以将第一寄存器重置为预设数值或者向功能模块b0提供第一寄存器中存储的当前数据;接着在该区块链平台自身进行初始化的过程中,即处理器执行功能模块b0的过程中,处理器具体地执行到功能模块b0包括的第二指令“wrpkcr”时,可以发现第一寄存器中存储的当前数据为预设数值,或者前述示例的第二寄存器p中的f与存储于第一寄存器的当前数据相同,因此处理器则可以直接执行功能模块b0中的第二指令“wrpkcr”来向第一寄存器中写入第二数据。
30.可选地,还包括步骤205,将应用程序中用于存放第一数据的目标指令设置为仅具有执行权限而不具有被读写的权限。例如请继续参考图3,功能模块b0可以通过intel mpk机制提供的能力关闭目标指令“mov r,eh”对应的逻辑地址的读写权限,确保目标指令“mov r,eh”仅仅允许被处理器直接执行,避免“mov r,eh”被该区块链平台中的native合约通过读取内存映像的方式,访问“mov r,eh”对应的逻辑地址而获取到由功能模块b0写入目标指令“mov r,eh”中的第一数据。
31.通过前述如图2所示的方法初始化应用程序之后,即可继续执行该应用程序。例如,通过功能模块b0完成初始化包括native合约的区块链平台后,该区块链平台中的功能模块b0可以接着调用功能模块b1,进入该区块链平台的正常的执行过程。
32.图4为本说明书实施例中提供的一种应用程序的执行方法的流程图。其中该方法中主要描述如何执行该应用程序中属于特权指令的第一指令,该方法由处理器执行,该处理器中包括与特权指令对应的第一寄存器。该方法至少可以包括如下步骤401-步骤405。
33.首先,在步骤401,获取应用程序中与第一指令对应的第一数据。
34.处理器可以从该第一指令所属第二程序段中获取第一数据。例如,处理器可以通过执行第二程序段中的目标指令,获取目标指令中与第一指令对应的第一数据到特定存储单元,然后从特定存储单元读取与第一指令对应的第一数据,具体如从前述示例的寄存器r读取与第一指令对应的第一数据。
35.接着,在步骤403,从第一寄存器中读取第二数据。
36.最后,在步骤405,根据第一数据和第二数据确定是否执行第一指令。
37.第一数据和第二数据相同,说明该第一指令为该应用程序的开发者允许执行的指令。第一数据和第二数据不同,说明该第一指令并非应用程序的开发者允许执行的指令。
38.请继续参考图3,结合前文对功能模块b0、功能模块b1和native合约的描述可知,当等待被处理器执行的第一指令属于功能模块b1时,功能模块b1中的“mov r,eh”和第一寄存器能够提供相同的数据,即寄存器r中提供的数据e与第一寄存器中存储的第二数据相同,功能模块b1中的第一指令将会被处理器直接执行。当等待被处理器执行的第一指令为native合约中的第一指令时,由于native合约不能获知位于“mov r,eh”和第一寄存器中的第二数据,其必然无法提供与第一寄存器中的第二数据相同的第一数据,此时native合约
中的第一指令存在两种情况:第一种情况为native合约中并不存在预留的并且位于该第一指令之前的目标指令,即前述示例的寄存器r中并不存在与第一寄存器中的第二数据相同的值,该第一指令将不会被处理器执行;第二种情况为native合约中存在预留的并且位于该第一指令之前的目标指令,然而该目标指令提供的第一数据与从第一寄存器中获得的第二数据不同,即前述示例的寄存器r中的第一数据与第一寄存器中的第二数据并不相同,此时处理器同样不会继续执行该第一指令。
39.需要特别说明的是,当处理器不再执行第一指令时,其具体可以跳空第一指令并继续执行该应用程序中的其它指令,或者按照预定的异常处理策略执行其它任务而不再继续执行该应用程序。
40.需要特别说明的是,虽然前述实施例中主要结合图3示例的区块链平台,示例性描述了由区块链平台自身提供的功能模块b0来实现在区块链平台自身进行初始化的过程中,向区块链平台中的目标指令和第一寄存器中分别写入第一数据和第二数据的过程,但是并不意味着必须由应用程序自身来提供用于设置第一数据和第二数据的特定功能模块。例如,可以预先在计算设备中部署相应的计算机程序,并且按照开发者的期望对该计算机程序进行配置,使得该计算机程序可以在处理器对应用程序进行初始化的过程中,在该应用程序中设置与第一指令对应的第一数据并且在第一指令对应的第一寄存器中设置第二数据。
41.与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种处理器。如图5所示,该处理器包括运算器501和第一寄存器503,第一寄存器503对应应用程序中包括的第一指令,该运算器501配置为:获取所述应用程序中与所述第一指令对应的第一数据;从所述第一寄存器503中读取第二数据;根据所述第一数据和所述第二数据确定是否执行所述第一指令。
42.在一种可能的实施方式中,所述应用程序中包括第一程序段和第二程序段,所述第一指令属于所述第二程序段;所述运算器501,还配置为根据所述第一程序段向所述第一寄存器写入所述第二数据。
43.在一种可能的实施方式中,所述运算器501还配置为根据所述第一程序段将所述第二数据作为所述第一数据写入所述第二程序段中的目标指令;所述运算器501具体配置为执行所述目标指令以获取所述第一数据。
44.在一种可能的实施方式中,所述运算器501还配置为根据所述第一程序段获取将作为第二数据的随机数。
45.在一种可能的实施方式中,所述运算器501还配置为根据所述第一程序段将所述目标指令设置为仅具有执行权限而不具有读写权限。
46.在一种可能的实施方式中,所述运算器501具体配置为根据所述第一程序段中的第二指令向所述第一寄存器写入所述第二数据,其中所述第二指令被设置为在以下任一情况下允许执行:所述处理器在当前时刻所处的特权级大于用户态的特权级;所述第一寄存器中存储有预设数值;所述第二指令对应的第二寄存器中存储的数据与存储于所述第一寄存器中的当前数据相同,所述第二寄存器中存储的数据由位于所述第二指令之前的指令流设置。
47.在一种可能的实施方式中,所述应用程序属于部署在区块链上的智能合约。
48.在一种可能的实施方式中,所述第一指令属于具有权限管理性质的特权指令。
49.与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种计算设备,该计算设备中包括本说明人任意一个实施例中提供的处理器。
50.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
51.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
52.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
53.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
54.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
55.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
56.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文
中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
57.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
58.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
59.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
60.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
再多了解一些

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

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

相关文献