防止应用程序反编译的系统及其方法
【技术领域】
[0001]本发明涉及一种防止应用程序反编译领域,特别是涉及一种基于网络的防止应用程序反编译的系统及其方法。
【背景技术】
[0002]安卓(Android)应用程序的上层是使用Java语言编写的,而现有的Java语言是一种跨平台的、解释型的语言。Java编译工具将Java源代码编译成为Java字节码文件,由Java虚拟机负责对Java字节码文件进行解释执行。与本地目标代码不同,Java字节码文件中仍然保留了方法名称、变量名称,并且通过这些名称来访问变量和方法,这些符号往往带有许多语义信息。因此,对Java字节码文件进行反编译就显得比较容易。有许多Java的反编译工具都能够从Java字节码文件生成高质量的源代码。
[0003]为阻止对Java字节码文件进行反编译,业界的做法有多种,不同的方案如下所示:
[0004]方案1:主要是通过将定义的类、变量、方法和包的名字改为无意义的字符串、使用非法的字符代替变量符号和在软件中添加一些无关的指令或永远执行不到的指令等手段来增加反编译和对反编译后源代码阅读的难度。但这种方案并不能真正阻止反编译,而且混淆都有一定规律可寻。
[0005]方案2:是将Java程序像C/C++程序一样编译成本机可执行的二进制代码。但是这样做使得Java程序失去其跨平台的特性,而且这种技术目前并不十分成熟,因此不适用于大型应用程序。
[0006]方案3:首先将Java字节码文件进行加密处理,然后自已编写一个Java类装载器在Java字节码文件装载时再进行解密处理。这种方案的缺点在于虽然经过加密的Java字节码文件无法被反编译,但自定义的类加载器本身却不能防止被反编译,因此,加密过的Java字节码文件仍然是不安全的。
[0007]因此,有必要提出一种克服现有技术种种缺失的防止应用程序反编译的系统及其方法,以切实有效地防止应用程序被反编译的问题。
【发明内容】
[0008]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种防止应用程序反编译的系统及其方法,以切实有效地防止应用程序被反编译的问题。
[0009]为实现上述目的及其他相关目的,本发明提供一种防止应用程序反编译的系统,其应用于基于网络的服务器与智能终端中,其特征在于,该防止应用程序反编译的系统包括:选择模块,提供一供选择作为文件保护对象的多种不同类型的文件的源程序安装包,其中,定义被选定为文件保护对象的至少一文件为受保护文件,在选定受保护文件后,产生一编译指令;编译模块,用以对该源程序安装包执行编译,以产生一应用程序安装包,其中,在编译过程中,将该受保护文件编译生成两种不同类型的目标文件,其中一种类型的目标文件是真正与该受保护文件相关的目标文件,定义为真目标文件,另一种类型的目标文件是与真目标文件的文件大小相同、但与该受保护文件不相关的目标文件,定义为假目标文件,而编译过程中,该应用程序安装包只包含假目标文件,真目标文件不包含于该应用程序安装包中,只存储在服务器端;发布模块,用以将编译生成的应用程序安装包通过网络予以发布,以供智能终端通过网络下载使用;以及授权模块,用以在智能终端通过网络下载所发布的应用程序安装包并执行安装时,发送一授权需求信息至智能终端,要求智能终端提供一唯一标识符信息,并在得到智能终端所提供的唯一标识符信息后,将受保护文件的真目标文件加载到智能终端的内存中,并根据所提供的唯一标识符信息,生成只适用于该智能终端的对应该唯一标识符信息的应用程序,安装完成后,清除释放该智能终端的内存中的真目标文件,而当智能终端需要再次使用所安装的应用程序时,则再次发送一授权需求信息至智能终端,要求智能终端提供该唯一标识符信息,并在得到智能终端所提供的唯一标识符信息后,授权该智能终端运行所安装的应用程序。
[0010]同时,本发明还提供一种防止应用程序反编译的方法,其应用于基于网络的服务器与智能终端中,其特征在于,该防止应用程序反编译的方法包括:1)在服务器端,提供一供选择作为文件保护对象的多种不同类型的文件的源程序安装包,其中,定义被选定为文件保护对象的至少一文件为受保护文件,在选定受保护文件后,产生一编译指令;2)在服务器端,对该源程序安装包执行编译,以产生一应用程序安装包,其中,在编译过程中,将该受保护文件编译生成两种不同类型的目标文件,其中一种类型的目标文件是真正与该受保护文件相关的目标文件,定义为真目标文件,另一种类型的目标文件是与真目标文件的文件大小相同、但与该受保护文件不相关的目标文件,定义为假目标文件,而编译过程中,该应用程序安装包只包含假目标文件,真目标文件不包含于该应用程序安装包中,只存储在服务器端;3)在服务器端,将编译生成的应用程序安装包通过网络予以发布,以供智能终端通过网络下载使用;4)在智能终端,通过网络下载所发布的应用程序安装包后,在执行安装时,通过网络向服务器发送一唯一标识符信息,以请求安装的云授权;5)在服务器端,响应该智能终端的安装云授权的请求,将受保护文件的真目标文件加载到智能终端的内存中,并根据所发送的唯一标识符信息,生成只适用于该智能终端的对应该唯一标识符信息的应用程序,安装完成后,清除释放该智能终端的内存中的真目标文件;6)在智能终端,在需要运行使用所安装的应用程序时,通过网络向服务器发送一唯一标识符信息,以请求运行的云授权;7)在服务器端,根据所发送的唯一标识符信息,通过网络响应该智能终端的运行云授权的请求;以及8)在智能终端,得到该服务器的响应,即正常运行使用该应用程序。具体而言,上述步骤8)进一步包括:当该智能终端关机或者退出该应用程序后,该服务器响应的运行云授权立即失效,下次需要运行使用该应用程序时,需重新提供唯一标识符信息以得到新的运行云授权。
[0011]优选地,上述受保护文件为java类文件、xml布局文件、资源文件、素材、库文件以及dex文件的其中一者。上述唯一标识符信息可例如为IMEI号(Internat1nalMobile Equipment Identity ;国际移动台设备识别码)、IMSI 号(Internat1nal MobileSubscriber Identity ;国际移动客户识别码)、智能终端所使用的软件版本号或者智能终端型号。该智能终端可例如为智能手机或者智能平板电脑等,但不以此为限。上述应用程序可例如为Android程序。
[0012]如上所述,本发明提出一种比较简单的管理保护例如Android程序的应用程序不会被反编译的系统及其方法,对Android系统中应用程序的运行机制,进行了进一步安全化处理,引入云加载,云保护机制在Android系统中,将重要的程序数据选作受保护文件在打包发布时不包含在发布包中;从操作系统层面上,程序安装运行时要求需要向服务器请求云授权,是否继续,等到服务器响应后才能继续运行程序,使用者通过浏览器请求程序运行云授权,请求信息中包含MEI号、MSI号、软件版本或智能终端型号等唯一标识符信息,服务器根据唯一标识符信息将受保护文件的真目标文件直接加载到智能终端中运行,运行完成释放清除受保护文件的真目标文件,再次使用需要再次授权,如此,则进一步加固了系统的应用程序的安全级别。
【附图说明】
[0013]图1显示为本发明的防止应用程序反编译的系统的方块示意图。
[0014]图2显示为本发明的防止应用程序反编译的方法的操作流程图。
[0015
]元件标号说明
[0016]100防止应用程序反编译的系统
[0017]101选择模块
[0018]102编译模块
[0019]103发布模块
[0020]104授权模块
[0021]SlOO ?S150、S200 ?S230 步骤
【具体实施方式】
[0022]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0023]需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0024]请参阅图1,本发明提供一种防止应用程序反编译的系统,其应用于基于网络的服务器与智能终端中,如图1所示,本发明的防止应用程序反编译的系统100包括选择模块101、编译1?块102、发布1?块103以及授权1?块104。其中,该智能终?而可例如为智能手机或者智能平板电脑等,该应用程序可例如为android程序,而该服务器为厂商的应用服务器。以下即对本发明的防止应用程序反编译的系统进行详细说明。
[0025]如图1所示,该选择模块101是用以提供一供选择作为文件保护对象的多种不同类型的文件的源程序安装包,其中,定义被选定为文件保护对象的至少一文件为受保护文件,在选定受保护文件后,产生一编译指令。换而言之,在产生该编译指令之前,通过该选择模块101即可形成一包含至少一受保护文件的源程序安装包。其中,该受保护文件可例如为java类文件、xml布局文件、资源文件、素材、库文件或者dex文件等,可以根据文件保护的需要选择其中的一种或数种作为文件保护对象。
[0026]该编译模块102是用以在接收到该选择模块101所产生的编译指令时,对该源程序安装包执行编译,以产生一应用程序安装包,其中,在编译过程中,将该源程序安装包中的受保护文件编译生成两种不同类型的目标文件,其中一种类型的目标文件是真正与该受保护文件相关的目标文件,即在后续应用程序安装过程中真正需要运用到的文件,定义为真目标文件,另一种类型的目标文件是与真目标文件的文件大小相同、但与该受保护文件不相关的目标文件,定义为假目标文件,而编译过程中,针对该受保护文件,该应用程序安装包中只包含假目标文件,真目标文件不包含于该应用程序安装包中,只存储在服务器端。
[0027]该发布模块103是用以将编译生成的应用程序安装包通过网络予以发布,以供智能终端通过网络下载使用。此时,针对受保护文件,在网络上发布的应用程序安装包中不存在其对应的真目标文件。这样既防止有人下载该应用程序安装包进行反向工程,即使下载了程序安装包,但程序安装包的重要部分如dex文件、库文件等均被选定为文件保护对象,因此,在应用程序安装包中只存在临时生成的与受保护文件的真目标文件相同大小的、和原始程序不相关的假目标文件,使得反编译者分析程序无门。
[0028]该授权模块104是用以在智能终端通过网络下载所发布的应用程序安装包并执行安装时,发送一授权需求信息至智能终端,要求智能终端提供一唯一标识符信息,并在得到智能终端所提供的唯一标识符信息后,将受保护文件的真目标文件从服务器端加载到智能终端的内存中(云加载模式),并根据所提供的唯一标识符信息,生成只适用于该智能终端的对应该唯一标识符信息的应用程序,安装完成后,清除释放该智能终端的内存中的真目标文件,而当智能终端需要再次使用所安装的应用程序时,再次发送一授权需求信息至智能终端,要求智能终端提供上述唯一标识符信息,并在得到智能终端所提供的唯一标识符信息后,授权该智能终端运行所安装的应用程序。
[0029]在本实施例中,该唯一标识符信息为MEI号、MSI号、智能终端所使用的软件版本号或者智能终端型号等。因此,在智能终端通过应用本发明的防止应用程序反编译的系统安装的应用程序都是基于智能终端的唯一标识符信息(即MEI号、頂SI号、软件版本号或者智能终端型号)生成的,其他智能终端即使加载此应用程序也是不能使用的,安全性得到了进一步的保证。而且,由该授权模块104产生的授权只是单次有效,当该智能终端关机或者退出应用程序,此次产生的授权都失效了,下次运行该应用程序时,需重新提供唯一标识符信息以得到新的授权。
[0030]请参阅图2,是显示应用如上所述的防止应用程序反编译的系统执行防止应用程序反编译的具体操作步骤。具体而言,本发明的防止应用程序反编译的方法是应用于基于网络的服务器与智能终端中,其中,该智能终端可例如为智能手机或者智能平板电脑等,该应用程序可例如为android程序,而该服务器为厂商的应用服务器。
[0031]如图2所示,在服务器侧,首先,执行步骤S100,提供一供选择作为文件保护对象的多种不同类型的文件的源程序安装包,其中,定义被选定为文件保护对象的至少一文件为受保护文件,在选定受保护文件后,产生一编译指令。因此,在产生该编译指令之前,该源程序安装包包含至少一受保护文件。其中,该受保护文件可例如为java类文件、xml布局文件、资源文件、素材、库文件或者dex文件等,可以根据文件的重要性选择其中的一种或数种作为文件保护对象。接着,进行步骤S110。
[0032]在步骤SllO中,对该源程序安装包执行编译,以产生一应用程序安装包。其中,在编译过程中,将该受保护文件编译生成两种不同类型的目标文件,其中一种类型的目标文件是真正与该受保护文件相关的目标文件,定义为真目标文件,另一种类型的目标文件是与真目标文件的文件大小相同、但与该受保护文件不相关的目标文件,定义为假目标文件,而编译过程中,该应用程序安装包只包含假目标文件,真目标文件不包含于该应用程序安装包中,只存储在服务器端。接着,进行步骤S120。
[0033]在步骤S120中,将编译生成的应用程序安装包通过网络予以发布,以供智能终端通过网络下载使用。此时,针对受保护文件,在网络上发布的应用程序安装包中不存在其对应的真目标文件。接着,进行步骤S130。
[0034]在步骤S130中,判断是否收到智能终端所发送的安装云授权的请求,若否,则进至步骤S141,若是,则进至步骤S142。
[0035]在步骤S141中,判断是否收到智能终端所发送的运行云授权的请求,若否,则返回至步骤S130,若是,则进至步骤S150。
[0036]在步骤S142中,响应该智能终端的安装云授权的请求,将受保护文件的真目标文件加载到智能终端的内存中,并根据所发送的唯一标识符信息,生成只适用于该智能终端的对应该唯一标识符信息的应用程序,安装完成后,清除释放该智能终端的内存中的真目标文件。更详而言之,该唯一标识符信息可例如为頂EI号、IMSI号、智能终端所使用的软件版本号或者智能终端型号等。
[0037]在步骤S150中,根据该智能终端所发送的唯一标识符信息,通过网络响应该智能终端的运行云授权的请求。
[0038]在智能终端,首先,执行步骤S200,通过网络下载所发布的应用程序安装包后,在执行安装时,
通过网络向服务器发送一唯一标识符信息,以请求安装的云授权。接着,进行步骤S210。
[0039]在步骤S210中,得到该服务器的响应,即正常安装该应用程序,以在该智能终端生成只适用于该智能终端的对应其自身的唯一标识符信息的应用程序。接着,进行步骤S220o
[0040]在步骤S220中,在需要运行使用所安装的应用程序时,通过网络向服务器发送一唯一标识符信息,以请求运行的云授权。接着,进行步骤S230。
[0041]在步骤S230中,得到该服务器的响应,即正常运行使用该应用程序,而当该智能终端关机或者退出该应用程序后,该服务器响应的运行云授权立即失效,下次需要运行使用该应用程序时,需重新提供唯一标识符信息以得到新的运行云授权。
[0042]综上所述,本发明提供一种防止应用程序反编译的系统及其方法,主要是采用云加载模式保证了程序核心文件不会在网络上公开传播,只是在用户使用时才会加载到智能终端,而且安装生成的应用程序都是基于特定智能终端的例如MEI号、MSI号的唯一标识符信息生成的,其他智能终端加载此应用程序也不能用,安全性得到了进一步保证。与传统的字节码混淆技术、转化本地代码以及自定义装载器等等方法比较起来,实现了保护程序不被分析反编译,使得代码的安全性得到了进一步提高。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0043]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【主权项】
1.一种防止应用程序反编译的系统,其应用于基于网络的服务器与智能终端中,其特征在于,所述防止应用程序反编译的系统包括: 选择模块,提供一供选择作为文件保护对象的多种不同类型的文件的源程序安装包,其中,定义被选定为文件保护对象的至少一文件为受保护文件,在选定受保护文件后,产生一编译指令; 编译模块,用以对所述源程序安装包执行编译,以产生一应用程序安装包,其中,在编译过程中,将所述受保护文件编译生成两种不同类型的目标文件,其中一种类型的目标文件是真正与所述受保护文件相关的目标文件,定义为真目标文件,另一种类型的目标文件是与真目标文件的文件大小相同、但与所述受保护文件不相关的目标文件,定义为假目标文件,而编译过程中,所述应用程序安装包只包含假目标文件,真目标文件不包含于所述应用程序安装包中,只存储在服务器端; 发布模块,用以将编译生成的应用程序安装包通过网络予以发布,以供智能终端通过网络下载使用;以及 授权模块,用以在智能终端通过网络下载所发布的应用程序安装包并执行安装时,发送一授权需求信息至智能终端,要求智能终端提供一唯一标识符信息,并在得到智能终端所提供的唯一标识符信息后,将受保护文件的真目标文件加载到智能终端的内存中,并根据所提供的唯一标识符信息,生成只适用于所述智能终端的对应所述唯一标识符信息的应用程序,安装完成后,清除释放所述智能终端的内存中的真目标文件,而当智能终端需要再次使用所安装的应用程序时,则再次发送一授权需求信息至智能终端,要求智能终端提供所述唯一标识符信息,并在得到智能终端所提供的唯一标识符信息后,授权所述智能终端运行所安装的应用程序。2.根据权利要求1所述的防止应用程序反编译的系统,其特征在于:所述受保护文件为java类文件、xml布局文件、资源文件、素材、库文件以及dex文件的其中一者。3.根据权利要求1所述的防止应用程序反编译的系统,其特征在于:所述唯一标识符信息为MEI号、IMSI号、智能终端所使用的软件版本号和智能终端型号的其中一者。4.根据权利要求1所述的防止应用程序反编译的系统,其特征在于:所述智能终端为智能手机、智能平板电脑的其中一者。5.根据权利要求1所述的防止应用程序反编译的系统,其特征在于:所述应用程序为Android 程序。6.—种防止应用程序反编译的方法,其应用于基于网络的服务器与智能终端中,其特征在于,所述防止应用程序反编译的方法包括: 1)在服务器端,提供一供选择作为文件保护对象的多种不同类型的文件的源程序安装包,其中,定义被选定为文件保护对象的至少一文件为受保护文件,在选定受保护文件后,产生一编译指令; 2)在服务器端,对所述源程序安装包执行编译,以产生一应用程序安装包,其中,在编译过程中,将所述受保护文件编译生成两种不同类型的目标文件,其中一种类型的目标文件是真正与所述受保护文件相关的目标文件,定义为真目标文件,另一种类型的目标文件是与真目标文件的文件大小相同、但与所述受保护文件不相关的目标文件,定义为假目标文件,而编译过程中,所述应用程序安装包只包含假目标文件,真目标文件不包含于所述应用程序安装包中,只存储在服务器端; 3)在服务器端,将编译生成的应用程序安装包通过网络予以发布,以供智能终端通过网络下载使用; 4)在智能终端,通过网络下载所发布的应用程序安装包后,在执行安装时,通过网络向服务器发送一唯一标识符信息,以请求安装的云授权; 5)在服务器端,响应所述智能终端的安装云授权的请求,将受保护文件的真目标文件加载到智能终端的内存中,并根据所发送的唯一标识符信息,生成只适用于所述智能终端的对应所述唯一标识符信息的应用程序,安装完成后,清除释放所述智能终端的内存中的真目标文件; 6)在智能终端,在需要运行使用所安装的应用程序时,通过网络向服务器发送一唯一标识符信息,以请求运行的云授权; 7)在服务器端,根据所发送的唯一标识符信息,通过网络响应所述智能终端的运行云授权的请求;以及 8)在智能终端,得到所述服务器的响应,即正常运行使用所述应用程序。7.根据权利要求6所述的防止应用程序反编译的方法,其特征在于:上述步骤8)进一步包括:当所述智能终端关机或者退出所述应用程序后,所述服务器响应的运行云授权立即失效,下次需要运行使用所述应用程序时,需重新提供唯一标识符信息以得到新的运行云授权。8.根据权利要求6所述的防止应用程序反编译的方法,其特征在于:所述受保护文件为java类文件、xml布局文件、资源文件、素材、库文件以及dex文件的其中一者。9.根据权利要求6所述的防止应用程序反编译的系统,其特征在于:所述唯一标识符信息为MEI号、IMSI号、智能终端所使用的软件版本号和智能终端型号的其中一者。10.根据权利要求6所述的防止应用程序反编译的系统,其特征在于:所述智能终端为智能手机、智能平板电脑的其中一者;所述应用程序为Android程序。
【专利摘要】本发明提供一种防止应用程序反编译的系统及其方法,主要是采用云加载模式保证了程序核心文件不会在网络上公开传播,只是在用户使用时才会加载到智能终端,而且安装生成的应用程序都是基于特定智能终端的例如IMEI号、IMSI号的唯一标识符信息生成的,其他智能终端加载此应用程序也不能用,而且,对所要保护的应用程序,智能终端需要一个“云授权”才能进入正常安装与运行,“云授权”由厂商的应用服务器提供,安全性得到了进一步保证。
【IPC分类】G06F21/14
【公开号】CN104899481
【申请号】CN201510338641
【发明人】刘云峰
【申请人】上海斐讯数据通信技术有限公司
【公开日】2015年9月9日
【申请日】2015年6月17日