本申请公开了应用防破解方法和装置。该方法的一具体实施方式包括:获取应用对应的被第一虚拟机解析的第一虚拟机指令;选取第一虚拟机指令中部分第一虚拟机指令,以及将部分第一虚拟机指令转换为被第二虚拟机解析的第二虚拟机指令;基于第一虚拟机指令中未被转换的第一虚拟机指令与第二虚拟机指令,生成应用对应的可执行文件。实现了由第一虚拟机、第二虚拟机分别解析第一虚拟机指令、第二虚拟机指令,使得即使破解程序从内存中提取出应用的源代码对应的所有虚拟机指令,因无法对第一虚拟机指令、第二虚拟机指令进行区分,导致破解程序无法基于获取的虚拟机指令对源代码进行恢复,从而防止应用被破解。
【技术实现步骤摘要】
本申请涉及互联网领域,具体涉及应用安全领域,尤其涉及应用防破解方法和装置。
技术介绍
目前,在用户安装应用时,通常通过下载包含有应用的源代码的安装包的方式进行安装。为防止应用被破解,即恢复出安装包中的源代码,在已知的技术中,通过将安装包中的源代码预先进行加密,然后在经加密后的源代码加载在内存中运行时,再对加密的源代码进行解密,以防止应用被破解。然而,当采用上述方式防止应用被破解时,经解密之后的源代码最终依然会全部加载在内存中运行,导致破解程序依然可以通过不断的捕获内存中的代码而获取应用的全部源代码,完成对应用的破解。
技术实现思路
本申请提供了应用防破解方法和装置,用于解决上述
技术介绍
部分存在的技术问题。第一方面,本申请提供了应用防破解方法,该方法包括:获取应用对应的被第一虚拟机解析的第一虚拟机指令,第一虚拟机指令基于对应用的源代码进行编译生成,第一虚拟机为解析第一虚拟机指令以生成机器指令的虚拟机;选取第一虚拟机指令中部分第一虚拟机指令,以及将部分第一虚拟机指令转换为被第二虚拟机解析的第二虚拟机指令,第二虚拟机为解析第二虚拟机指令生成机器指令的虚拟机;基于第一虚拟机指令中未被转换的第一虚拟机指令与第二虚拟机指令,生成应用对应的可执行文件,以使得可执行文件被执行时,由第一虚拟机、第二虚拟机分别执行未被转换的第一虚拟机指令、第二虚拟机指令。第二方面,本申请提供了应用防破解装置,该装置包括:获取单元,配置用于获取应用对应的被第一虚拟机解析的第一虚拟机指令,第一虚拟机指令基于对应用的源代码进行编译生成,第一虚拟机为解析第一虚拟机指令以生成机器指令的虚拟机;处理单元,配置用于选取第一虚拟机指令中部分第一虚拟机指令,以及将部分第一虚拟机指令转换为被第二虚拟机解析的第二虚拟机指令,第二虚拟机为解析第二虚拟机指令生成机器指令的虚拟机;生成单元,配置用于基于第一虚拟机指令中未被转换的第一虚拟机指令与第二虚拟机指令,生成应用对应的可执行文件,以使得可执行文件被执行时,由第一虚拟机、第二虚拟机分别执行未被转换的第一虚拟机指令、第二虚拟机指令。本申请提供的应用防破解方法和装置,通过获取应用对应的被第一虚拟机解析的第一虚拟机指令;选取第一虚拟机指令中部分第一虚拟机指令,以及将部分第一虚拟机指令转换为被第二虚拟机解析的第二虚拟机指令;基于第一虚拟机指令中未被转换的第一虚拟机指令与第二虚拟机指令,生成应用对应的可执行文件,以使得可执行文件被执行时,由第一虚拟机、第二虚拟机分别执行未被转换的第一虚拟机指令、第二虚拟机指令。实现了由第一虚拟机、第二虚拟机分别解析第一虚拟机指令、第二虚拟机指令,使得即使破解程序从内存中提取出应用的源代码对应的所有虚拟机指令,因无法对第一虚拟机指令、第二虚拟机指令进行区分,导致破解程序无法基于获取的虚拟机指令对源代码进行恢复,从而防止应用被破解。【附图说明】通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2示出了根据本申请的应用防破解方法的一个实施例的流程图;图3示出了 Java虚拟机解析虚拟机指令生成机器指令的原理图;图4示出了根据本申请的应用防破解方法的另一个实施例的流程图;图5示出了根据本申请的应用防破解装置的一个实施例的结构示意图;图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。【具体实施方式】下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的应用防破解方法或应用防破解装置的实施例的示例性系统架构100。如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供传输链路的介质。网络104可以包括各种连接类型,例如有线、无线传输链路或者光纤电缆等等。用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯应用,例如网络安全类应用、SP时通信工具等。终端设备101、102、103可以是具有显示屏并且支持网络通信的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Aud1 Layer III,动态影像专家压缩标准音频层面3)、MP4 (Moving PictureExperts Group Aud1 Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上的应用提供安全支持的服务器。服务器105可以接收到终端设备101、102、103发送的应用安装包下载请求,并对安装包进行处理,并将处理结果(例如包含有第二虚拟机指令的安装包)反馈给终端设备。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。请参考图2,其示出了根据本申请的应用防破解方法的一个实施例的流程200。本实施例所提供的应用防破解方法可以由图1中的终端设备101、102、103或服务器105执行。该方法包括以下步骤:步骤201,获取应用对应的被第一虚拟机解析的第一虚拟机指令。在本实施例中,第一虚拟机指令基于对应用的源代码进行编译生成,第一虚拟机为解析第一虚拟机指令以生成机器指令的虚拟机。例如,当应用的源代码为Java代码时,第一虚拟机指令可以为由Java编译器对Java代码进行编译后生成的Java字节码,相应地,第一虚拟机可以为执行Java字节码的Java虚拟机。应理解,上述第一虚拟机为Java字节码,第一虚拟机可以为Java虚拟机即为示例性地简要说明虚拟机与虚拟机指令的对应关系,在本实施例中,并不对虚拟机的类型进行限定。以下说明的虚拟机解析虚拟机指令生成机器指令的基本原理既适用于Java虚拟机,也适用于其他类型的虚拟机。在说明虚拟机解析虚拟机指令生成机器指令的原理之前,首先说明应用的源代码(例如C代码、C++代码等)经编译之后生成机器指令的基本原理:用于执行机器指令的CPU对应一个指令集(例如X86指令集),相应地,CPU执行的每一个操作(例如将数据写入内存的存储操作)由多条机器指令组成。在应用的源代码中,可以由一条或多条代码表示一个由CPU执行的操作,在对源代码进行编译时,源代码会被运行于平台的编译器解析为适用于平台(例如Linux、Windows)的指令。以CPU执行的操作为将数据写入内存的存储操作为例,假设源代码中包含一条与存储操作对应的代码。在Linux平台上,该代码经由运行于Linux上的编译器(例如GCC编译器)进行编译之后,可以生成与该代码对应本文档来自技高网...
【技术保护点】
一种应用防破解方法,其特征在于,所述方法包括:获取所述应用对应的被第一虚拟机解析的第一虚拟机指令,所述第一虚拟机指令基于对所述应用的源代码进行编译生成,所述第一虚拟机为解析所述第一虚拟机指令以生成机器指令的虚拟机;选取所述第一虚拟机指令中部分第一虚拟机指令,以及将所述部分第一虚拟机指令转换为被第二虚拟机解析的第二虚拟机指令,所述第二虚拟机为解析所述第二虚拟机指令生成机器指令的虚拟机;基于第一虚拟机指令中未被转换的第一虚拟机指令与第二虚拟机指令,生成所述应用对应的可执行文件,以使得所述可执行文件被执行时,由所述第一虚拟机、第二虚拟机分别执行所述未被转换的第一虚拟机指令、第二虚拟机指令。
【技术特征摘要】
【专利技术属性】
技术研发人员:王桂明,包沉浮,
申请(专利权)人:百度在线网络技术北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。