一种编译方法、装置、设备及系统制造方法及图纸

技术编号:22135540 阅读:27 留言:0更新日期:2019-09-18 09:13
本说明书实施例公开了一种编译方法、装置、设备及系统。方案包括:获取源程序,将所述源程序进行编译,得到第一中间代码,根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码,根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;根据所述解码对应关系表生成解释器,将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。

A Compiling Method, Device, Equipment and System

【技术实现步骤摘要】
一种编译方法、装置、设备及系统
本申请涉及计算机
,尤其涉及一种编译方法、装置、设备及系统。
技术介绍
随着近年来互联网的快速发展,为了满足人们日常生活的各种需求,各种类型的应用程序也越来越多。例如,导航类应用程序,视频类应用程序、购物类应用程序和游戏类应用程序。这些应用程序的使用即为人们生活提供了便利性,又丰富了人们的娱乐生活。应用程序在运行之前,需要先在编译器中进行编译,由源程序转变成计算机可以识别的目标程序,计算机再根据转变的目标程序运行该应用程序。目前,传统的编译器编译出的目标程序易于分析,根据编译出的目标程序可以很容易的反推出源程序,对抗逆向工程性差。
技术实现思路
有鉴于此,本申请实施例提供了一种编译方法、装置、设备及系统,用于提高编译器编译出的目标程序的抗逆向工程性。为解决上述技术问题,本说明书实施例是这样实现的:本说明书实施例提供的一种编译方法,包括:获取源程序;将所述源程序进行编译,得到第一中间代码;根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;根据所述解码对应关系表生成解释器;将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。本说明书实施例提供的一种运行方法,包括:获取目标程序,所述目标程序包括目标子程序和解释器;若所述目标子程序为指令字节码,调用所述解释器解释所述指令字节码,得到第二代码;运行所述第二代码。本说明书实施例提供的一种编译装置,包括:第一获取模块,用于获取源程序;第一编译模块,用于将所述源程序进行编译,得到第一中间代码;拆分模块,用于根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;第二编译模块,用于根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;生成模块,用于根据所述解码对应关系表生成解释器;合并模块,用于将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。本说明书实施例提供的一种运行装置,包括:第二获取模块,用于获取目标程序,所述目标程序包括目标子程序和解释器;解释模块,用于若所述目标子程序为指令字节码,调用所述解释器解释所述指令字节码,得到第二代码;运行模块,用于运行所述第二代码。本说明书实施例提供的一种编译设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:获取源程序;将所述源程序进行编译,得到第一中间代码;根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;根据所述解码对应关系表生成解释器;将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。本说明书实施例提供的一种运行设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:获取目标程序,所述目标程序包括目标子程序和解释器;若所述目标子程序为指令字节码,调用所述解释器解释所述指令字节码,得到第二代码;运行所述第二代码。本说明书实施例提供的一种编译系统,包括:多个应用服务器、至少一个集中缓存服务器,和数据库;所述多个应用服务器分别与所述集中缓存服务器连接;所述集中缓存服务器与所述数据库相连;所述应用服务器,用于获取源程序;将所述源程序进行编译,得到第一中间代码;根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;根据所述解码对应关系表生成解释器;将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。本说明书实施例提供的一种运行系统,包括:多个应用服务器、至少一个集中缓存服务器,和数据库;所述多个应用服务器分别与所述集中缓存服务器连接;所述集中缓存服务器与所述数据库相连;所述应用服务器,用于获取目标程序,所述目标程序包括目标子程序和解释器;若所述目标子程序为指令字节码,调用所述解释器解释所述指令字节码,得到第二代码;运行所述第二代码。本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:采用上述方案后,能将源程序编译出的中间代码进行拆分,得到第一代码和第二代码,再将第二代码进行编译形成指令字节码,然后将第一代码与指令字节码和生成的用于解释指令字节码的解释器合并得到目标程序,形成的目标程序不易于分析,根据编译出的目标程序不易反推出源程序,对抗逆向工程性强。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本说明书实施例提供的一种编译方法的流程示意图;图2为本说明书实施例提供的一种解释器解释指令字节码的流程示意图;图3为本说明书实施例中一种编译方法的原理示意图;图4为本说明书实施例提供的一种运行方法的流程示意图;图5为本说明书实施例提供的对应于图1的一种编译装置的结构示意图;图6为本说明书实施例提供的对应于图4的一种运行装置的结构示意图;图7为本说明书实施例提供的对应于图1的一种编译设备的结构示意图和对应于图4的一种运行设备的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。应用程序在运行之前,需要先在编译器中进行编译,由源程序转变成计算机可以识别的目标程序,计算机再根据转变出的目标程序运行该应用程序。在传统的编译过程中,将源程序编译成目标程序的工作过程分为五个阶段:词法分析、语法分析、语义检查、中间代码生成和代码优化。主要是进行词法分析和语法分析,分析过程中发现有语法错误,给出提示信息。中间代码生成之后,进行代码优化最终生成目标程序。逆向工程是根据已有的东西和结果,通过分析来推导出具体的实现方法。例如,你看到某个目标程序能够做出漂亮的动画效果,你通过反编译的方法,分析出其动画效果的实现过程,得到源程序,这种行为就是逆向工程。利用传统的编译器编译出的目标程序易于分析,即易于反编译出源程序,对抗逆向工程性差。以下结合附图,详细说明本申请各实施例提供的技术方案。图1为本说明书实施例提供的一种编译方法的流程示意图。从程序角度而言,流程的执行主体可以为编译器,具体可以包括:步骤S101:获取源程序。步骤S102:将所述源程序进行编译,得到第一中间代码。具体的,编译器首先获取待编译的源程序。源程序是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件,通常由高级语言编写。例如,常见的高级语言有ObjectPascal、C、C#、Java、ASP和PHP等。将获取的源程序进行词法分析、语法分析和语义检查,得到第一中间代码(IR,Intermed本文档来自技高网...

【技术保护点】
1.一种编译方法,包括:获取源程序;将所述源程序进行编译,得到第一中间代码;根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;根据所述解码对应关系表生成解释器;将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。

【技术特征摘要】
1.一种编译方法,包括:获取源程序;将所述源程序进行编译,得到第一中间代码;根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;根据所述解码对应关系表生成解释器;将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。2.如权利要求1所述的方法,所述根据所述解码对应关系表生成解释器,具体包括:获取所述解码对应关系表中的字节对应关系;根据所述字节对应关系确定对应于所述解码对应关系表的解释器。3.如权利要求1所述的方法,所述根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码,具体包括:获取所述解码对应关系表中的字节对应关系;根据所述字节对应关系确定对应于所述解码对应关系表的指令字节码。4.如权利要求1所述的方法,在所述根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码之前,还包括:根据预设的关系表生成算法动态生成所述解码对应关系表。5.如权利要求1所述的方法,在所述根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码之后,还包括:将所述第二代码进行拆分,得到第三代码和第四代码;根据第一解码对应关系表对所述第三代码进行编译处理,得到第一指令字节码;根据所述第一解码对应关系表生成第一解释器;根据第二解码对应关系表对所述第四代码进行编译处理,得到第二指令字节码;根据所述第二解码对应关系表生成第二解释器;将所述第一代码、所述第一指令字节码、所述第一解释器、所述第二指令字节码和所述第二解释器合并,得到目标程序。6.如权利要求1所述的方法,在所述根据所述解码对应关系表生成解释器之后,还包括:将所述第一代码与所述解释器进行合并,得到第二中间代码;将所述第二中间代码和所述指令字节码合并,得到目标程序。7.一种运行方法,包括:获取目标程序,所述目标程序包括目标子程序和解释器;若所述目标子程序为指令字节码,调用所述解释器解释所述指令字节码,得到第二代码;运行所述第二代码。8.如权利要求7所述的方法,还包括:若所述目标子程序为第一代码,则直接运行所述第一代码。9.一种编译装置,包括:第一获取模块,用于获取源程序;第一编译模块,用于将所述源程序进行编译,得到第一中间代码;拆分模块,用于根据预存的标识符将所述第一中间代码进行拆分,得到第一代码和第二代码;第二编译模块,用于根据解码对应关系表对所述第二代码进行编译处理,得到指令字节码;生成模块,用于根据所述解码对应关系表生成解释器;合并模块,用于将所述第一代码、所述解释器和所述指令字节码合并,得到目标程序。10.如权利要求9所述...

【专利技术属性】
技术研发人员:张建涛
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1