CN108399319B - 源代码保护方法、应用服务器及计算机可读存储介质 - Google Patents
源代码保护方法、应用服务器及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108399319B CN108399319B CN201710914956.6A CN201710914956A CN108399319B CN 108399319 B CN108399319 B CN 108399319B CN 201710914956 A CN201710914956 A CN 201710914956A CN 108399319 B CN108399319 B CN 108399319B
- Authority
- CN
- China
- Prior art keywords
- program
- jdk
- file
- code
- encrypted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000006870 function Effects 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 14
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种源代码保护方法,所述方法包括:接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;运行所述处理后的JDK;及通过所述处理后的JDK调取所述加密后的文件并进行解密。本发明还提供一种应用服务器。本发明提供的源代码保护方法及应用服务器,能够有效地阻止源文件被反编译,保证了源文件的安全性,同时保持了程序的跨平台特性,提高用户的体验。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种源代码保护方法、应用服务器及计算机可读存储介质。
背景技术
Java语言能够跨平台,是因为Java源代码被编译器翻译成了类文件,而类文件作为中间代码是以一种和平台无关的格式保存的。类文件有一个缺点,就是可以利用JDK中的反汇编器对类文件进行反汇编,然后再利用反编译工具对反汇编的结果进行反编译,得出该类的源代码。这对需要防止Java源代码被剽窃或攻击的程序员来说是非常不利的。
现有类文件保护的方法主要有如下几种:字节码混淆技术、加载器加密技术、本地编译技术、字节码水印技术。
字节码混淆技术是利用混淆器工具防范反编译器的编译,其目的是使反编译程序难以理解类程序,以至于逆向工程将花费更多的时间和精力来翻译类文件,大部分混淆器工具打乱在字节码文件中的标识符,一个有意义的名字用顺序或随机产生的毫无意义的名字代替。但这种技术只是做到了表面上的模糊,其内部业务逻辑却依然不变,如果破解者有耐心,仍是可以攻破的。
加载器加密技术首先采用一定的加密算法加密类文件,再将此类文件传输到目的主机,然后用特定的自定义类加载器加载并解析加密的类文件。但因为class loader本身也是java写的,自身又不能加密,所以别人只要反编译你的class loader就能轻易拿到你的解密方法。
本地编译技术是指将Java应用程序编译成本地应用程序,将文字码程序转换成本地二进制文件,不仅可提高程序运行速度、占用更少的内存,还可使其安全性达到本地可执行应用程序的程度。但这种技术使应用程序失去了跨平台的特征,并且由于本地编译器的不成熟,不适应于大型应用程序。
字节码水印技术与在图片声音中嵌入水印一样,在Java程序中也能嵌入透明的、安全的和鲁棒性的信息,能够在确认某些程序是否属于剽窃时提供有效的证据,但不能阻止类文件被重用或者被反编译。
发明内容
有鉴于此,本发明提出一种源代码保护方法及应用服务器,有效地阻止了源文件被反编译,保证了源文件的安全性,同时保持了程序的跨平台特性,提高用户的体验。
首先,为实现上述目的,本发明提出一种应用服务器,所述应用服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的源代码保护程序,所述源代码保护程序被所述处理器执行时实现如下步骤:
接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;
获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;
运行所述处理后的JDK;及
通过所述处理后的JDK调取所述加密后的文件并进行解密。
可选地,所述利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理的步骤,具体包括:
解析JDK,获取所述JDK的文件处理代码程序;
在所述文件处理代码程序之前插入加密判断程序,所述加密判断程序用于判断所述JDK调取的文件是否经过加密;及
在所述加密判断程序之后插入所述代码解密程序的调用函数,所述调用函数用于在判断出所述JDK调取的文件经过加密后,调取所述代码解密程序。
可选地,在所述运行所述处理后的JDK的步骤之前,所述源代码保护程序被所述处理器执行时还实现如下步骤:
将所述加密后文件存储于硬盘。
可选地,所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤,具体包括:
从所述硬盘读取所述加密后的文件;
利用所述处理后的JDK判断读取的所述加密后的文件是否经过加密;
若所述加密后的文件是经过加密,则利用所述处理后JDK中的调用函数调用所述代码解密程序对所述加密后的文件进行解密。
可选地,在所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤之前,所述源代码保护程序被所述处理器执行时还实现如下步骤:
获取JAVA虚拟机中运行的加密后的文件对应的应用是否满足预设标识;
若所述加密后的文件对应的应用满足预设标识,则对所述加密后的文件进行解密;及
若所述加密后的文件对应的应用不满足预设标识,则对所述加密后的文件不进行解密。
此外,为实现上述目的,本发明还提供一种源代码保护方法,该方法应用于应用服务器,所述方法包括:
接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;
获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;
运行所述处理后的JDK;及
通过所述处理后的JDK调取所述加密后的文件并进行解密。
可选地,所述利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理的步骤,具体包括:
解析JDK,获取所述JDK的文件处理代码程序;
在所述文件处理代码程序之前插入加密判断程序,所述加密判断程序用于判断所述JDK调取的文件是否经过加密;及
在所述加密判断程序之后插入所述代码解密程序的调用函数,所述调用函数用于在判断出所述JDK调取的文件经过加密后,调取所述代码解密程序。
可选地,在所述运行所述处理后的JDK的步骤之前,所述方法还包括:
将所述加密后的文件存储于硬盘。
可选地,所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤,具体包括:
从所述硬盘读取所述加密后的文件;
利用所述处理后的JDK判断读取的所述加密后的文件是否经过加密;及
若所述加密后的文件是经过加密,则利用所述处理后JDK中的调用函数调用所述代码解密程序对所述加密后的文件进行解密。
可选地,在所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤之前,所述方法还包括:
获取JAVA虚拟机中运行的加密后的文件对应的应用是否满足预设标识;
若所述加密后的文件对应的应用满足预设标识,则对所述加密后的文件进行解密;及
若所述加密后的文件对应的应用不满足预设标识,则对所述加密后的文件不进行解密。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有源代码保护程序,所述源代码保护程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的源代码保护方法的步骤。
相较于现有技术,本发明所提出的应用服务器、源代码保护方法及计算机可读存储介质,首先,接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;其次,获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;然后,运行所述处理后的JDK;最后,通过所述处理后的JDK调取所述加密后的文件并进行解密。这样,可以避免现有技术中类文件被重用或者被反编译的弊端,有效地阻止源文件被反编译,保证了源文件的安全性,同时保持了程序的跨平台特性,提高用户的体验。
附图说明
图1是本发明应用服务器一可选的硬件架构的示意图;
图2是本发明源代码保护程序第一实施例的程序模块图;
图3是本发明源代码保护程序第二实施例的程序模块图;
图4为本发明源代码保护方法第一实施例的流程图;
图5为本发明源代码保护方法第二实施例的流程图;
图6为本发明源代码保护方法第三实施例的流程图;
图7为本发明源代码保护方法第四实施例的流程图。
附图标记:
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
参阅图1所示,是应用服务器1一可选的硬件架构的示意图。
所述应用服务器1可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,该应用服务器1可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
本实施例中,所述应用服务器1可包括,但不仅限于,可通过系统总线相互通信连接存储器11、处理器12、网络接口13。
所述应用服务器1通过网络接口13连接网络(图1未标出),获取资讯。所述网络1可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System ofMobile communication,GSM)、宽带码分多址(Wideband Code Division MultipleAccess,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi、通话网络等无线或有线网络。
需要指出的是,图1仅示出了具有组件11-13的应用服务器1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述应用服务器1的内部存储单元,例如该应用服务器1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述应用服务器1的外部存储设备,例如该应用服务器1配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述应用服务器1的内部存储单元也包括其外部存储设备。本实施例中,所述存储器11通常用于存储安装于所述应用服务器1的操作系统和各类应用软件,例如所述源代码保护程序200的程序代码等。此外,所述存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述应用服务器1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行所述的源代码保护程序200等。
所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述应用服务器1与其他电子设备之间建立通信连接。
本实施例中,所述应用服务器2内安装并运行有源代码保护程序200,当所述源代码保护程序200运行时,所述应用服务器1接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;运行所述处理后的JDK;通过所述处理后的JDK调取所述加密后的文件并进行解密。这样,可以避免现有技术中类文件被重用或者被反编译的弊端,有效地阻止源文件被反编译,保证了源文件的安全性,同时保持了程序的跨平台特性,提高用户的体验。
至此,己经详细介绍了本发明各个实施例的相关设备的硬件结构和功能。下面,将基于上述应用环境和相关设备,提出本发明的各个实施例。
首先,本发明提出一种源代码保护程序200。
本实施例中,所述的源代码保护程序200包括一系列的存储于存储器11上的计算机程序指令,当该计算机程序指令被处理器12执行时,可以实现本发明各实施例的源代码保护的控制操作。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,所述源代码保护程序200可以被划分为一个或多个模块。例如,在图2中,所述源代码保护程序200可以被分割成接收模块201、加密模块202、获取模块203、执行模块204以及解密模块205。其中:
所述接收模块201,用于接收用户输入的代码加密程序。
用户在移动终端输入代码加密程序。具体地,所述源代码指的是需要对外部署的应用的源代码。在本实施例中,用户输入的代码加密程序,以C语言代码(简称C代码)加密程序为例进行说明。通过在应用的源代码中加入C代码加密程序,再进行编译,在编译完成的同时也完成了源代码的加密。在本实施方式中,所述C代码加密程序和下文的C代码解密程序为一些现有的C代码加解密程序,本文不再详细说明。
所述加密模块202,用于利用所述代码加密程序对所述源代码进行加密,得到加密后的文件。
所述获取模块203,用于获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK。
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。具体地,为实现利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理的步骤,所述获取模块203,还用于:
解析JDK,获取所述JDK的文件处理代码程序;在所述文件处理代码程序之前插入加密判断程序及在所述加密判断程序之后插入所述代码解密程序的调用函数。所述加密判断程序用于判断所述JDK调取的文件是否经过加密,所述调用函数用于在判断出所述JDK调取的文件经过加密后,调取所述代码解密程序。
本实施例中,所述文件处理代码程序包括:加载文件程序、定义类文件程序及解压压缩包程序。
在本实施方式中,所述获取的JDK,为现有的开源的JDK,比如JDK1.7、JDK1.8等等,开源的JDK可以解析出其实现的代码程序,并可以根据现有的代码程序添加开发者自定义的功能程序,比如本实施方式中,在加载文件程序、定义类文件程序、解压压缩包程序可以加入判断程序,去判断接收的文件是否经过了加密,而具体的判断方法可以调用正常的解析函数去解析接收的文件,如果能正常解析,则没有经过加密,反之,则经过了加密。在加入的判断程序之后和加载文件程序、定义类文件程序、解压压缩包程序之前,还可以加入C代码解密程序的调用函数,以实现C代码解密程序的调用。
所述执行模块204,用于运行所述处理后的JDK。
所述解密模块205,通过所述处理后的JDK调取所述加密后的文件并进行解密。
具体地,在所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤之前,所述解密模块205还用于:
获取JAVA虚拟机(Java Virtual Machine,JVM)中运行的加密后的文件对应的应用是否满足预设标识;若加密后的文件对应的应用满足预设标识,则所述解密模块205对加密后的文件进行解密,否则,若加密后的文件对应的应用不满足预设标识,则所述解密模块205不对加密后的文件进行解密。
在本实施例中,一个服务器或智能计算设备上可能还存在其他应用,但在实际使用过程中,只需要针对目标应用去执行处理后JDK中的解密流程,如果不对需要解密的应用做出判断,那么对任何一个应用都会去执行解密过程,则影响了应用的安全性。
通过上述程序模块201-205,本发明所提出的源代码保护程序200,首先,接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;其次,获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;然后,运行所述处理后的JDK;最后,通过所述处理后的JDK调取所述加密后的文件并进行解密。这样,可以避免现有技术中类文件被重用或者被反编译的弊端,有效地阻止源文件被反编译,保证了源文件的安全性,同时保持了程序的跨平台特性,提高用户的体验。
进一步地,基于本发明源代码保护程序200的上述第一实施例,提出本发明的第二实施例(如图3所示)。本实施例中,所述的源代码保护程序200还包括存储模块206,所述存储模块206,用于:
在所述执行模块204运行所述处理后的JDK的步骤之前,将所述加密后的文件存储于硬盘。
本实施例中,所述解密模块205,还用于:
从所述硬盘读取所述加密后的文件;利用所述处理后的JDK判断读取的所述加密后的文件是否经过加密;若所述加密后的文件是经过加密,则利用所述处理后JDK中的调用函数调用所述代码解密程序对所述加密后的文件进行解密。
在本实施例中,应用在通过JDK执行之前,以源代码的类文件的形式存放于硬盘中,如此,在通过处理后的JDK从硬盘里调用这些加密后的源代码的同时就能立即进行解码,不涉及应用源代码后续的处理流程,实现了对后续应用的透明化。
通过上述程序模块201-206,本发明所提出的源代码保护程序200可以通过处理后的JDK从硬盘里调用这些加密后的源代码的同时就能立即进行解码,不涉及应用源代码后续的处理流程,实现了对后续应用的透明化。
此外,本发明还提出一种源代码保护方法。
参阅图4所示,是本发明源代码保护方法第一实施例的流程图。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。
步骤S401,接收用户输入的代码加密程序。
用户在移动终端输入的代码加密程序。具体地,所述源代码指的是需要对外部署的应用的源代码。在本实施例中,用户输入的代码加密程序,以C语言代码(简称C代码)加密程序为例进行说明。通过在应用的源代码中加入C代码加密程序,再进行编译,在编译完成的同时也完成了源代码的加密。在本实施方式中,所述C代码加密程序和下文的C代码解密程序为一些现有的C代码加解密程序,本文不再详细说明。
步骤S402,利用所述代码加密程序对所述源代码进行加密,得到加密后的文件。
步骤S403,获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK。
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。具体地,所述利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理的具体步骤,将在本发明源代码保护方法的第二实施例(参阅图5)进行详述。
步骤S404,运行所述处理后的JDK。
步骤S405,通过所述处理后的JDK调取所述加密后的文件并进行解密。
具体地,在所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤之前,所述应用服务器1还获取JAVA虚拟机(Java Virtual Machine,JVM)中运行的加密后的文件对应的应用是否满足预设标识;若加密后的文件对应的应用满足预设标识,则所述应用服务器1对加密后的文件进行解密,否则,若加密后的文件对应的应用不满足预设标识,则所述应用服务器1不对加密后的文件进行解密。
在本实施例中,一个服务器或智能计算设备上可能还存在其他应用,但在实际使用过程中,只需要针对目标应用去执行处理后JDK中的解密流程,如果不对需要解密的应用做出判断,那么对任何一个应用都会去执行解密过程,则影响了应用的安全性。
通过上述步骤S401-405,本发明所提出的源代码保护方法,首先,接收用户输入的代码加密程序,并利用所述代码加密程序对所述源代码进行加密,得到加密后的文件;其次,获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK;然后,运行所述处理后的JDK;最后,通过所述处理后的JDK调取所述加密后的文件并进行解密。这样,可以避免现有技术中类文件被重用或者被反编译的弊端,有效地阻止源文件被反编译,保证了源文件的安全性,同时保持了程序的跨平台特性,提高用户的体验。
如图5所示,是本发明源代码保护方法的第二实施例的流程图。本实施例中,所述通过相应于所述代码加密程序的代码解密程序对所述JDK进行处理的步骤,具体包括:
步骤S501,解析JDK,获取所述JDK的文件处理代码程序。
本实施例中,所述文件处理代码程序包括:加载文件程序、定义类文件程序及解压压缩包程序。
步骤S502,在所述文件处理代码程序之前插入加密判断程序及在所述加密判断程序之后插入所述代码解密程序的调用函数。
步骤S503,通过所述加密判断程序判断所述JDK调取的文件是否经过加密,当所述JDK调取的文件经过加密后,执行步骤S504,否则,结束流程。
步骤S504,通过所述调用函数调取所述代码解密程序。
在本实施方式中,所述获取的JDK,为现有的开源的JDK,比如JDK1.7、JDK1.8等等,开源的JDK可以解析出其实现的代码程序,并可以根据现有的代码程序添加开发者自定义的功能程序,比如本实施方式中,在加载文件程序、定义类文件程序、解压压缩包程序可以加入判断程序,去判断接收的文件是否经过了加密,而具体的判断方法可以调用正常的解析函数去解析接收的文件,如果能正常解析,则没有经过加密,反之,则经过了加密。在加入的判断程序之后和加载文件程序、定义类文件程序、解压压缩包程序之前,还可以加入C代码解密程序的调用函数,以实现C代码解密程序的调用。
通过上述步骤S501-S504,本发明所提出的源代码保护方法,可以通过利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理。
如图6所示,是本发明源代码保护方法的第三实施例的流程图。在本实施例中,根据不同的需求,图6所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。
步骤S601,接收用户输入的代码加密程序。
步骤S602,利用所述代码加密程序对所述源代码进行加密,得到加密后的文件。
步骤S603,获取JDK,并利用相应于所述代码加密程序的代码解密程序对所述JDK进行处理,得到处理后的JDK。
步骤S604,将所述加密后的文件存储于硬盘。
步骤S605,运行所述处理后的JDK。
步骤S606,通过所述处理后的JDK调取所述加密后的文件并进行解密。
通过上述步骤S601-S606,本发明所提出的源代码保护方法,可以通过处理后的JDK从硬盘里调用这些加密后的源代码的同时就能立即进行解码,不涉及应用源代码后续的处理流程,实现了对后续应用的透明化。
基于本发明源代码保护方法的第三实施例,提出本发明源代码保护方法的第四实施例。
如图7所示,是本发明源代码保护方法的第四实施例的流程图。本实施例中,所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤,具体包括:
步骤S701,从所述硬盘读取所述加密后的文件。
步骤S702,利用所述处理后的JDK判断读取的所述加密后的文件是否经过加密。若所述加密后的文件是经过加密,执行步骤S703,否则,结束流程。
步骤S703,利用所述处理后JDK中的调用函数调用所述代码解密程序对所述加密后的文件进行解密。
在本实施例中,应用在通过JDK执行之前,以源代码的类文件的形式存放于硬盘中,如此,在通过处理后的JDK从硬盘里调用这些加密后的源代码的同时就能立即进行解码,不涉及应用源代码后续的处理流程,实现了对后续应用的透明化。
通过上述步骤S701-S703,本发明所提出的源代码保护方法,可以通过处理后的JDK调取加密后的文件并进行解密。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种源代码保护方法,应用于应用服务器,其特征在于,所述方法包括:
接收用户输入的代码加密程序,并通过所述代码加密程序对所述源代码进行加密,得到加密后的文件,所述源代码为需要对外部署的应用的源代码;
获取JDK,解析JDK,获取所述JDK的文件处理代码程序,所述文件处理代码程序包括:加载文件程序、定义类文件程序及解压压缩包程序;
在所述文件处理代码程序之前插入加密判断程序,所述加密判断程序用于判断所述JDK调取的文件是否经过加密;及
在所述加密判断程序之后插入所述代码解密程序的调用函数,所述调用函数用于在判断出所述JDK调取的文件经过加密后,调取所述代码解密程序对所述JDK进行处理,得到处理后的JDK;
运行所述处理后的JDK;及
获取JAVA虚拟机中运行的加密后的文件对应的应用是否满足预设标识;
若所述加密后的文件对应的应用满足预设标识,则通过所
述处理后的JDK调取所述加密后的文件并进行解密;及
若所述加密后的文件对应的应用不满足预设标识,则对所述加密后的文件不进行解密。
2.如权利要求1所述的源代码保护方法,其特征在于,在所述运行所述处理后的JDK的步骤之前,所述方法还包括:
将所述加密后的文件存储于硬盘。
3.如权利要求2所述的源代码保护方法,其特征在于,所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤,具体包括:
从所述硬盘读取所述加密后的文件;
利用所述处理后的JDK判断读取的所述加密后的文件是否经过加密;及
若所述加密后的文件是经过加密,则通过所述处理后JDK中的调用函数调用所述代码解密程序对所述加密后的文件进行解密。
4.一种应用服务器,其特征在于,所述应用服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的源代码保护程序,所述源代码保护程序被所述处理器执行时实现如下步骤:
接收用户输入的代码加密程序,并通过所述代码加密程序对所述源代码进行加密,得到加密后的文件,所述源代码为需要对外部署的应用的源代码;
获取JDK,解析JDK,获取所述JDK的文件处理代码程序,所述文件处理代码程序包括:加载文件程序、定义类文件程序及解压压缩包程序;
在所述文件处理代码程序之前插入加密判断程序,所述加密判断程序用于判断所述JDK调取的文件是否经过加密;及
在所述加密判断程序之后插入所述代码解密程序的调用函数,所述调用函数用于在判断出所述JDK调取的文件经过加密后,调取所述代码解密程序对所述JDK进行处理,得到处理后的JDK;
运行所述处理后的JDK;及
获取JAVA虚拟机中运行的加密后的文件对应的应用是否满足预设标识;
若所述加密后的文件对应的应用满足预设标识,则通过所述处理后的JDK调取所述加密后的文件并进行解密;及
若所述加密后的文件对应的应用不满足预设标识,则对所述加密后的文件不进行解密。
5.如权利要求4所述的应用服务器,其特征在于,在所述运行所述处理后的JDK的步骤之前,还包括:
将所述加密后的文件存储于硬盘。
6.如权利要求5所述的应用服务器,其特征在于,所述通过所述处理后的JDK调取所述加密后的文件并进行解密的步骤,具体包括:
从所述硬盘读取所述加密后的文件;
利用所述处理后的JDK判断读取的所述加密后的文件是否经过加密;及
若所述加密后的文件是经过加密,则利用所述处理后JDK中的调用函数调用所述代码解密程序对所述加密后的文件进行解密。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有源代码保护程序,所述源代码保护程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-3中任一项所述的源代码保护方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710914956.6A CN108399319B (zh) | 2017-09-30 | 2017-09-30 | 源代码保护方法、应用服务器及计算机可读存储介质 |
PCT/CN2018/077642 WO2019062015A1 (zh) | 2017-09-30 | 2018-02-28 | 源代码保护方法、应用服务器及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710914956.6A CN108399319B (zh) | 2017-09-30 | 2017-09-30 | 源代码保护方法、应用服务器及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399319A CN108399319A (zh) | 2018-08-14 |
CN108399319B true CN108399319B (zh) | 2021-07-16 |
Family
ID=63094492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710914956.6A Active CN108399319B (zh) | 2017-09-30 | 2017-09-30 | 源代码保护方法、应用服务器及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108399319B (zh) |
WO (1) | WO2019062015A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040133A (zh) * | 2018-09-27 | 2018-12-18 | 上海点融信息科技有限责任公司 | 在区块链网络中安装智能合约的方法、装置及存储介质 |
CN109409038A (zh) * | 2018-09-30 | 2019-03-01 | 北京梆梆安全科技有限公司 | 一种动态链接库文件的破解风险检测方法及装置 |
CN109460640A (zh) * | 2018-11-13 | 2019-03-12 | 杭州涂鸦信息技术有限公司 | 一种Java程序保护方法、装置、设备及可读存储介质 |
CN110267253B (zh) * | 2019-05-13 | 2022-09-27 | 中国联合网络通信集团有限公司 | eSIM管理平台、eSIM安装方法及装置 |
CN111274551B (zh) * | 2019-12-30 | 2023-06-27 | 上海上讯信息技术股份有限公司 | 基于编译器的java代码保护方法、装置及电子设备 |
CN111367505A (zh) * | 2020-03-02 | 2020-07-03 | 广州致远电子有限公司 | 一种JavaScript源代码保密方法、装置、设备及存储介质 |
CN112966227A (zh) * | 2021-02-04 | 2021-06-15 | 南方电网深圳数字电网研究院有限公司 | 代码加密解密方法和装置、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN103745141A (zh) * | 2013-12-02 | 2014-04-23 | 上海斐讯数据通信技术有限公司 | 智能终端android系统中防止应用程序反编译的方法 |
CN103955423A (zh) * | 2013-12-25 | 2014-07-30 | 中软信息系统工程有限公司 | 一种国产jvm的测试评估方法 |
EP2980695A1 (en) * | 2010-05-09 | 2016-02-03 | Citrix Systems Inc. | Methods and systems for forcing an application to store data in a secure storage location |
CN106709286A (zh) * | 2016-11-30 | 2017-05-24 | 江苏神州信源系统工程有限公司 | 一种对apk资源包进行安全加固的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060106801A1 (en) * | 2004-11-12 | 2006-05-18 | International Business Machines Corporation | Securing location of an installed middleware application and securing location of containers contained within installed middleware application |
CN104462995A (zh) * | 2014-11-28 | 2015-03-25 | 福建畅云安鼎信息科技有限公司 | 一种数字化加工安全保护系统 |
CN104881284A (zh) * | 2015-05-22 | 2015-09-02 | 国云科技股份有限公司 | 一种高效的日志操作方法 |
-
2017
- 2017-09-30 CN CN201710914956.6A patent/CN108399319B/zh active Active
-
2018
- 2018-02-28 WO PCT/CN2018/077642 patent/WO2019062015A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2980695A1 (en) * | 2010-05-09 | 2016-02-03 | Citrix Systems Inc. | Methods and systems for forcing an application to store data in a secure storage location |
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN103745141A (zh) * | 2013-12-02 | 2014-04-23 | 上海斐讯数据通信技术有限公司 | 智能终端android系统中防止应用程序反编译的方法 |
CN103955423A (zh) * | 2013-12-25 | 2014-07-30 | 中软信息系统工程有限公司 | 一种国产jvm的测试评估方法 |
CN106709286A (zh) * | 2016-11-30 | 2017-05-24 | 江苏神州信源系统工程有限公司 | 一种对apk资源包进行安全加固的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108399319A (zh) | 2018-08-14 |
WO2019062015A1 (zh) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399319B (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
US10853270B2 (en) | Cryptographic pointer address encoding | |
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
KR101503785B1 (ko) | 동적 라이브러리를 보호하는 방법 및 장치 | |
KR102433011B1 (ko) | Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 | |
CN111552931A (zh) | java代码的加壳方法与系统 | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
CN103530535A (zh) | 一种Android平台应用程序保护的加脱壳方法 | |
KR101623096B1 (ko) | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 | |
CN106415491B (zh) | 一种应用保护方法、服务器以及终端 | |
CN107077540B (zh) | 用于提供基于云的应用安全服务的方法和系统 | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
CN106548046B (zh) | 一种保护代码的装置和方法 | |
CN107092816B (zh) | 一种Android应用程序加固方法 | |
CN108133147B (zh) | 可执行代码的保护方法、设备及可读存储介质 | |
CN109992974B (zh) | 虚拟机字节码文件的保护方法、设备及可读存储介质 | |
CN108021790B (zh) | 文件保护方法、装置、计算设备及计算机存储介质 | |
CN114547653B (zh) | 开发环境的加密方法、解密方法及装置、设备和介质 | |
CN109995534B (zh) | 一种对应用程序进行安全认证的方法和装置 | |
CN108664796B (zh) | 一种so文件保护方法及装置 | |
KR101863325B1 (ko) | 역공학 방지 방법 및 장치 | |
CN107403103B (zh) | 文件解密方法和装置 | |
CN111522555B (zh) | apk文件的加固方法、解密方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |