1.本技术涉及软件开发
技术领域:
:,尤其涉及一种应用程序的运行环境生成方法及装置。
背景技术:
::2.在操作系统中,为了避免安全信息和敏感信息(如支付密码、秘钥、生物特征信息等)泄露,通常需要对安全和敏感信息进行安全存储,并提供各种加解密计算,即存储隔离和计算隔离。3.目前,相关的隔离技术包括软件隔离和硬件隔离,在隔离环境中运行的大多数安全程序(如用于线上支付的应用程序)的指令集采用cpu的指令集,由于针对通用cpu的各种软件开发工具易于获得,对这些安全程序的可执行文件易于分析,比如反汇编,用调试器跟踪执行等等,存在安全信息和敏感信息泄露的风险。技术实现要素:4.本技术实施例提供了一种应用程序的运行环境生成方法及装置,提高对应用程序运行过程中的操作码进行反汇编和跟踪执行分析的难度,降低安全信息和敏感信息泄露的风险。5.第一方面,本技术实施例一种应用程序的运行环境生成方法,包括:6.确定虚拟机的指令集,所述指令集包括多个指令各自对应的第一操作码;7.确定所述指令集的操作码映射信息,所述操作码映射信息用于表示指令的第一操作码和所述指令的第二操作码的映射关系;8.根据所述操作码映射信息,将所述应用程序的第一程序包中所述多个指令各自对应的第一操作码转换为所述多个指令各自对应的第二操作码,得到所述应用程序的第二程序包;9.将所述虚拟机的第一配置文件中所述多个指令各自对应的第一操作码转换为所述多个指令各自对应的第二操作码,得到所述虚拟机的第二配置文件,所述虚拟机用于运行所述应用程序;10.根据所述应用程序的第二程序包和所述虚拟机的第二配置文件发布所述应用程序和所述虚拟机,以使所述虚拟机为所述应用程序提供运行环境。11.在一种可能的实现方式中,所述操作码映射信息包括操作码映射关系表或映射函数。12.在一种可能的实现方式中,所述方法还包括:13.获取所述应用程序的源代码;14.根据所述指令集,对所述应用程序的源代码进行编译,得到所述应用程序的第一程序包。15.在一种可能的实现方式中,所述确定所述指令集的操作码映射信息,包括:16.对所述多个指令各自对应的第一操作码进行转换,得到所述多个指令各自对应的第二操作码;17.根据所述多个指令各自对应的第一操作码和所述多个指令各自对应的第二操作码,生成所述操作码映射信息。18.在一种可能的实现方式中,所述虚拟机为堆栈式模型。19.第二方面,本技术实施例提供了一种应用程序的运行环境生成装置,包括:20.第一确定模块,用于确定虚拟机的指令集,所述指令集包括多个指令各自对应的第一操作码;21.第二确定模块,用于确定所述指令集的操作码映射信息,所述操作码映射信息用于表示指令的第一操作码和所述指令的第二操作码的映射关系;22.转换模块,用于根据所述操作码映射信息,将所述应用程序的第一程序包中所述多个指令各自对应的第一操作码转换为所述多个指令各自对应的第二操作码,得到所述应用程序的第二程序包;23.所述转换模块还用于将所述虚拟机的第一配置文件中所述多个指令各自对应的第一操作码转换为所述多个指令各自对应的第二操作码,得到所述虚拟机的第二配置文件,所述虚拟机用于运行所述应用程序;24.发布模块,用于根据所述应用程序的第二程序包和所述虚拟机的第二配置文件发布所述应用程序和所述虚拟机,以使所述虚拟机为所述应用程序提供运行环境。25.在一种可能的实现方式中,所述操作码映射信息包括操作码映射关系表或映射函数。26.在一种可能的实现方式中,所述装置还包括:27.获取模块,用于获取所述应用程序的源代码;28.编译模块,用于根据所述指令集,对所述应用程序的源代码进行编译,得到所述应用程序的第一程序包。29.在一种可能的实现方式中,所述第二确定模块用于:30.对所述多个指令各自对应的第一操作码进行转换,得到所述多个指令各自对应的第二操作码;31.根据所述多个指令各自对应的第一操作码和所述多个指令各自对应的第二操作码,生成所述操作码映射信息。32.在一种可能的实现方式中,所述虚拟机为堆栈式模型。33.第三方面,本技术实施例提供了一种计算机设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述第一方面或第一方面中任一种可能的实现方式中所提供的方法。34.第四方面,本技术实施例提供了一种计算机存储介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行上述第一方面或第一方面中任一种可能的实现方式中所提供的方法。35.本技术实施例提供的应用程序的运行环境生成方法及装置,通过虚拟机的指令集的操作码映射信息,能够对虚拟机的指令集中多个指令的操作码进行转换,即虚拟机的指令集为可变指令集。基于操作码映射信息,能够对应用程序对应的多个指令进行转换,以及对虚拟机对应的多个指令进行转换,如此,可以使不同的应用程序运行时调用的指令的操作码不同,从而提高对应用程序运行过程中的操作码进行反汇编和跟踪执行分析的难度,降低安全信息和敏感信息泄露的风险。附图说明36.图1示出了本技术实施例提供的一种应用程序的运行环境生成方法的流程示意图;37.图2示出了本技术实施例提供的一种应用程序的运行环境生成装置的结构示意图;38.图3示出了本技术实施例提供的一种计算机设备的结构示意图。具体实施方式39.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本技术实施例中的技术方案进行描述。40.在本技术实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。41.在本技术实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。42.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。43.目前,相关的隔离技术包括软件隔离和硬件隔离,在隔离环境中运行的大多数安全程序(如用于线上支付的应用程序)的指令集采用cpu的指令集,由于针对通用cpu的各种软件开发工具易于获得,对这些安全程序的可执行文件易于分析,比如反汇编,用调试器跟踪执行等等,存在安全信息和敏感信息泄露的风险。44.本技术实施例提供了一种应用程序的运行环境生成方法及装置,虚拟机的指令集的操作码映射信息,能够对虚拟机的指令集中多个指令的操作码进行转换,即虚拟机的指令集为可变指令集。基于操作码映射信息,能够对应用程序对应的多个指令进行转换,以及对虚拟机对应的多个指令进行转换,如此,可以使不同的应用程序运行时调用的指令的操作码不同,从而提高对应用程序运行过程中的操作码进行反汇编和跟踪执行分析的难度,降低安全信息和敏感信息泄露的风险。45.图1是本技术实施例提供的一种应用程序的运行环境生成方法的流程示意图。46.如图1所示,本技术实施例提供的一种应用程序的运行环境生成方法包括:47.s101:确定虚拟机的指令集,指令集包括多个指令各自对应的第一操作码。48.虚拟机(virtualmachine,vm)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现,例如,java虚拟机。虚拟机为应用程序提供运行环境时,需要具有一套自身的指令集。该指令集中包括多个指令对应的操作码,即第一操作码。49.其中,虚拟机的指令集根据虚拟机规范确定的。例如,开发人员可以根据虚拟机规定配置虚拟机的指令集。指令集可以包括多种类型的指令,如,栈操作指令,基本数据存取指令,数组访问指令,基本算术运算指令,基本逻辑运算指令,位操作指令,条件/无条件转移指令,函数调用/返回指令和异常处理指令等。虚拟机的指令集如表一所示。需要说明的是,表一未示出不包含支持过程语言的数据段管理指令和数据段存取指令50.表一51.52.53.54.[0055][0056]在一些实施例中,为了减少代码量,节省安装虚拟机的设备的资源,虚拟机可以是堆栈式模型。[0057]s102:确定指令集的操作码映射信息,操作码映射信息用于表示指令的第一操作码和指令的第二操作码的映射关系。[0058]为了使虚拟机的指令集是可变的指令集,提高指令被反汇编等难度,可以使用与第一操作码不同的字段或字符(即第二操作码)替换指令集中多个指令的第一操作码。例如,开发人员可以自定义每个指令对应的第二操作码。[0059]根据每个指令对应的第二操作码可以生成操作码映射信息。其中,操作码映射信息能够表征每个指令的第一操作码与第二操作码的映射关系。[0060]在一些实施例中,操作码映射信息可以是操作码映射表或映射函数等。[0061]s103:根据操作码映射信息,将应用程序的第一程序包中多个指令各自对应的第一操作码转换为多个指令各自对应的第二操作码,得到应用程序的第二程序包。[0062]应用程序的第一程序包是基于应用程序的源代码进行编译得到的。具体地,可以先获取应用程序的源代码。由于应用程序的运行环境为虚拟机,因此,可以基于虚拟机的指令集,对应用程序的源代码进行编译,从而得到应用程序的第一程序包。[0063]在这里,第一程序包是记载应用程序的功能,运行逻辑等信息的文件。为了保证应用程序能够在虚拟机中运行,第一程序包的文件格式为虚拟机可以执行的文件格式。例如,开发人员可以自定义文件格式。例如,本技术实施例提供一种自定义的可执行文件格式(xcvmexecutablefile,xef)。其中,xcvm可执行文件格式是单一的二进制文件,由多个段(segment),每个段均保存不同的信息。如表二所示。[0064]表二[0065][0066][0067]其中,xcvm可执行文件格式中header段包括包相关信息(如,应用标识(aid)、版本、名称),文件自身的相关信息(如,版本、文件长度、校验和)以及其他各个段的长度和在文件中的偏移,如表三所示。[0068]表三[0069][0070][0071]应用程序的第一程序包中包括多个指令对应的操作码。为了保证应用程序运行过程中的安全性,降低安全信息和敏感信息的泄露风险,可以根据操作码映射信息,对第一程序包中多个指令的第一操作码进行转换,得到应用程序的第二程序包。第二程序包中多个指令的操作码为第二操作码。[0072]s104:将虚拟机的第一配置文件中多个指令各自对应的第一操作码转换为多个指令各自对应的第二操作码,得到虚拟机的第二配置文件,虚拟机用于运行应用程序。[0073]虚拟机的第一配置文件包括多个指令各自对应的第一操作码。为了保证应用程序运行过程中的安全性,降低安全信息和敏感信息的泄露风险,可以根据操作码映射信息,第一配置文件中的多个指令各自对应的第一操作码进行转换,得到虚拟机的第二配置文件,即虚拟机中的第二配置文件包括多个指令各自对应的第二操作码。[0074]s105:根据应用程序的第二程序包和虚拟机的第二配置文件发布应用程序和虚拟机,以使虚拟机为应用程序提供运行环境。[0075]可以将应用程序与虚拟机对应发布,从而使得使用者下载该应用程序和虚拟机。例如,可以将应用程序和虚拟机下载至电子设备中,电子设备基于第二程序包安装应用程序,基于第二配置文件,安装虚拟机。虚拟机为应用程序提供运行环境。[0076]本技术实施例提供的一种应用程序的运行环境生成方法,通过虚拟机的指令集的操作码映射信息,能够对虚拟机的指令集中多个指令的操作码进行转换,即虚拟机的指令集为可变指令集。基于操作码映射信息,能够对应用程序对应的多个指令进行转换,以及对虚拟机对应的多个指令进行转换,如此,可以使不同的应用程序运行时调用的指令的操作码不同,从而提高对应用程序运行过程中的操作码进行反汇编和跟踪执行分析的难度,降低安全信息和敏感信息泄露的风险。[0077]图2是本技术实施例提供了一种应用程序的运行环境生成装置的结构示意图。[0078]如图2所示,本技术实施例提供的应用程序的运行环境生成装置200可以包括:[0079]第一确定模块201,用于确定虚拟机的指令集,所述指令集包括多个指令各自对应的第一操作码;[0080]第二确定模块202,用于确定所述指令集的操作码映射信息,所述操作码映射信息用于表示指令的第一操作码和所述指令的第二操作码的映射关系;[0081]转换模块203,用于根据所述操作码映射信息,将所述应用程序的第一程序包中所述多个指令各自对应的第一操作码转换为所述多个指令各自对应的第二操作码,得到所述应用程序的第二程序包;[0082]所述转换模块203还用于将所述虚拟机的第一配置文件中所述多个指令各自对应的第一操作码转换为所述多个指令各自对应的第二操作码,得到所述虚拟机的第二配置文件,所述虚拟机用于运行所述应用程序;[0083]发布模块204,用于根据所述应用程序的第二程序包和所述虚拟机的第二配置文件发布所述应用程序和所述虚拟机,以使所述虚拟机为所述应用程序提供运行环境。[0084]在一种可能的实现方式中,所述操作码映射信息包括操作码映射关系表或映射函数。[0085]在一种可能的实现方式中,所述装置还包括:[0086]获取模块,用于获取所述应用程序的源代码;[0087]编译模块,用于根据所述指令集,对所述应用程序的源代码进行编译,得到所述应用程序的第一程序包。[0088]在一种可能的实现方式中,所述第二确定模块202用于:[0089]对所述多个指令各自对应的第一操作码进行转换,得到所述多个指令各自对应的第二操作码;[0090]根据所述多个指令各自对应的第一操作码和所述多个指令各自对应的第二操作码,生成所述操作码映射信息。[0091]在一种可能的实现方式中,所述虚拟机为堆栈式模型。[0092]本技术实施例提供的应用程序的运行环境生成装置能够执行图1对应的实施例中的方法的步骤,并能够达到相同的技术效果,为避免重复,在此不再详细说明。[0093]本技术实施例提供的应用程序的运行环境生成装置,通过虚拟机的指令集的操作码映射信息,能够对虚拟机的指令集中多个指令的操作码进行转换,即虚拟机的指令集为可变指令集。基于操作码映射信息,能够对应用程序对应的多个指令进行转换,以及对虚拟机对应的多个指令进行转换,如此,可以使不同的应用程序运行时调用的指令的操作码不同,从而提高对应用程序运行过程中的操作码进行反汇编和跟踪执行分析的难度,降低安全信息和敏感信息泄露的风险。[0094]下面介绍本技术实施例提供的一种计算机设备。[0095]图3是本技术实施例提供的一种计算机设备的结构示意图。如图3所示,该计算机设备包括:一个或多个处理器301、存储器302,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示计算机设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个计算机设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图3中以一个处理器301为例。[0096]存储器302即为本技术所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本技术所提供的方法。本技术的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本技术所提供的方法。[0097]存储器302作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本技术实施例中的方法对应的程序指令/模块。处理器301通过运行存储在存储器302中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。[0098]存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。[0099]计算机设备还可以包括:输入装置303和输出装置304。处理器301、存储器302、输入装置303和输出装置304可以通过总线或者其他方式连接,图3中以通过总线连接为例。[0100]输入装置303可接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置304可以包括显示计算机设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示计算机设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示计算机设备可以是触摸屏。[0101]另外,结合上述实施例,本技术实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种方法。[0102]以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本技术的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。[0103]还需要说明的是,本技术中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本技术不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。[0104]上面参考根据本技术的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本技术的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。[0105]以上所述,仅为本技术的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本技术的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。当前第1页12当前第1页12