CN103218549A - 一种Java源代码加解密的方法及装置 - Google Patents
一种Java源代码加解密的方法及装置 Download PDFInfo
- Publication number
- CN103218549A CN103218549A CN2012100182034A CN201210018203A CN103218549A CN 103218549 A CN103218549 A CN 103218549A CN 2012100182034 A CN2012100182034 A CN 2012100182034A CN 201210018203 A CN201210018203 A CN 201210018203A CN 103218549 A CN103218549 A CN 103218549A
- Authority
- CN
- China
- Prior art keywords
- source code
- java
- function
- code
- program source
- 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.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种Java源代码加解密的方法及装置,应用于网络技术领域。该方法包括:对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端解密所述授权文件与所述抽取了函数调用逻辑的Java代码生成源代码文件。应用本申请提供的方法和装置能够方便的对现有代码进行有效的版权保护和运行控制。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种Java源代码加解密的方法及装置。
背景技术
反编译(Decompiling)是指高级语言源程序经过编译变成可执行文件,反编译就是逆过程,但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
Java语言由于跨平台等特性,生成的class文件非常容易被反编译软件反编译,导致源代码的泄露,这样对代码享有版权的公司或个人就无法有效的保证其软件不被非法破解和运行。
现有技术中,解决Java代码版权问题的方案主要有class加密方案和代码混淆方案,具体实现为:
(1)class加密方案,通过加密算法(例如AES等)对class文件进行加密,并通过自定义的ClassLoader在加载类的时候对文件进行解密。
AES(Advanced Encryption Standard)又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
ClassLoader是指:当Java程序运行时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。
(2)代码混淆方案通过代码混淆软件,对软件的源代码进行混淆,导致反编译后的class文件不具备可读性。
代码混淆(Code Obfuscation)混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的情况下,即使被反编译,也难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。
上述两种现有技术的解决方案都无法对Java程序进行方便有效的运行控制,如果要运行控制,则需要开发者自己实现相应的运行控制代码,增加了开发者的负担。
另外,现有的class加密工具由于本身是基于ClassLoader实现,而ClassLoader是由Java代码实现,所以很容易通过修改JAVA程序字节码的方式破解,代码混淆只能单纯的对代码进行混淆或加密,而无法进行有效的运行控制。
发明内容
本申请提供一种Java源代码加解密的方法及装置,本申请所提供的方法和装置解决现有技术中Java语言容易被反编译的问题。
一种Java源代码加密的方法,该方法包括:
对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;
将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;
将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端通过发送请求获取所述授权文件后,应用所述Java类加载器解密所述授权文件,并将解密得到的函数的调用信息与所述抽取了函数调用逻辑的Java代码生成源代码文件。
一种Java源代码解密方法,包括:
当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;
接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器;
当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
一种Java源代码加密装置,该装置包括:
函数抽取模块,用于对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;
包装函数生成模块,用于将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;
加密文件生成模块,用于将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端通过发送请求获取所述授权文件后,应用所述Java类加载器解密所述授权文件,并将解密得到的函数的调用信息与所述抽取了函数调用逻辑的Java代码生成源代码文件。
一种Java源代码解密装置,该装置包括:
授权文件获取模块,用于当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;
源代码生成模块,用于接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器,当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
上述技术方案中的一个或两个,至少具有如下技术效果:
本申请所提供的方法和装置通过抽取Java代码中的函数调用逻辑进行集中加密,使得任何的反编译手段失效。
附图说明
图1为本申请实施例一种Java源代码加密的方法的流程图;
图2为本申请实施例一种Java源代码解密方法的流程图;
图3为本申请实施例一种Java源代码加密装置的结构示意图;
图4为本申请实施例一种Java源代码解密装置的结构示意图;
图5为本申请实施例一种Java程序运行控制系统的结构示意图。
具体实施方式
本申请实施例提供一种Java源代码加密的方法,该方法包括:对程序源代码进行逻辑抽出处理,得到源代码中的函数调用逻辑和抽取了函数调用逻辑的Java代码;在每个函数调用逻辑的原调用位置插入一个随机命名的第一函数,并对所述第一函数与所述函数调用逻辑的对应关系进行加密生成授权文件;将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端通过发送请求获取所述授权文件后,应用所述Java类加载器解密所述授权文件,并将解密得到的函数调用逻辑与所述抽取了函数调用逻辑的Java代码生成源代码文件。
如图1所示,本申请实施例提供一种Java源代码加密的方法,下面结合说明书附图对本申请的具体实施方式进行详细说明:
因为现有的程序编译过程中,功能模块的细化使得编译人员,能够在自己编译的程序中使用调用模块的方法将多个功能模块串接在一起实现一个完整的功能。所以,每个Java程序都包括一个逻辑的框架以及逻辑框架中各接口调用的一些源代码。即每个程序源代码包括每个原函数的调用信息和抽取了函数调用逻辑的Java代码。
步骤101,对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;其中所述函数的调用信息包括:函数的调用对象,函数名、函数的参数列表和函数的返回值类型。
在本申请实施例中,可以通过多种方式对程序源代码进行逻辑抽出处理,最优的实现方式可以是:通过抽象语法树(AST Abstract Syntax Tree)对所述源代码进行逻辑抽出处理;或者通过字节码方式对所述源代码进行逻辑抽出处理。
其中,AST(Abstract Syntax Tree)作为程序的一种中间表示形式,在程序分析等诸多领域有广泛的应用。利用抽象语法树可以方便地实现多种源程序处理工具。比如源程序浏览器、智能编辑器、语言翻译器等.抽象语法树的结构不依赖于源语言的文法,也就是语法分析阶段所采用的上下文无关文法。因为在Parser工程中,经常会对文法进行等价的转换(消除左递归、回溯、二义性等),这样会给文法引入一些多余的成分,对后续阶段造成不利影响,甚至会使各阶段变得混乱。因此,很多编译器(包括GJC)经常要独立地构造语法分析树,为前、后端建立一个清晰的接口。
因为在逻辑抽取后,需要保持程序的完整性,使得程序运行时候能够找到抽取出来的函数。所有需要在源程序被抽取函数的位置添加一个第一函数,该第一函数即为被抽取函数的填充函数。
步骤102,将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;
为了保证第一函数和原函数的一致性,所述第一函数的返回类型与对应位置的原函数的返回类型相同;另外,为了起到加密的混淆的作用,第一函数中各参数的位置与对应位置的原函数的参数位置不相同,但是第一函数中被打乱参数的位置信息与原函数的信息保存有对应的关系。
为了进一步的增加所述程序的安全性,还可以在所述第一函数中加入无效参数,所以所述第一函数中的参数与原函数相比还包括无效参数。
其中,第一个调用参数是函数的调用者,剩余参数与原原函数调用的参数列表相同。
根据实例对步骤101和步骤102做进一步详细的说明,例:
原有代码为:
SomeClass x=new SomeClass();
String s=x.get(100);
经过函数调用逻辑抽取后的代码:
SomeClass x=new SomeClass();
String s=A.stub_1234(x,100);/A为随机函数/
表述原函数与随机插入函数关系的代码:
步骤103,将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端。
其中,所述java类加载器与所述程序源代码的启动控制方式对应,所述启动控制方式包括:输入密码启动,注册码启动,绑定Mac地址或绑定U盾方式。
当用户终端需要运行所述程序源代码时,用户终端通过发送请求获取所述授权文件,并应用对应的所述Java类加载器ClassLoader解密所述授权文件,并将解密得到的函数调用逻辑与所述抽取了函数调用逻辑的JAVA代码生成源代码文件。
由于现有基于类加载器的Java加密程序的类加载本身就是使用Java实现的,可以被直接反编译导致被破解,为了增加整个加密过程的安全性,本申请实施例中的ClassLoader使用C语言实现。
因为所述ClassLoader是基于C语言实现的,所以使用JNI技术在Java中调用此C语言实现的解密类加载器对授权文件进行解密操作,即使用JNI技术,使用C语言编写的ClassLoader直接向JVM中装入类。
如图2所示,根据上述加密的方法,本申请实施例还提供一种Java源代码解密方法,该方法具体包括:
步骤201,当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;
本申请实施例中,所述授权文件即图1方法步骤中提取的源代码中的每个原函数的调用信息,以及调运信息与第一函数的对应关系。
步骤202,接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的JAVA代码对应的解密所述授权文件的Java类加载器;
步骤203,当所述程序源代码启动时,应用所述类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将得到的多个函数调用信息与所述抽取了函数调用逻辑的JAVA代码组合得到完整的程序源代码。
由于现有基于类加载器ClassLoader的Java加密程序的类加载本身就是使用Java实现的,可以被直接反编译导致被破解,为了增加整个加密过程的安全性,本申请实施例中的ClassLoader使用C语言实现。
因为所述ClassLoader是基于C语言实现的,所以使用JNI技术在Java中调用此C语言实现的解密类加载器对所述授权文件进行解密操作,即使用JNI技术,使用C语言编写的ClassLoader直接向JVM中装入类。
从Java1.1开始,JNI(Java Native Interface,JAVA本地调用)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持即可。
所述java类加载器与所述程序源代码的启动控制方式对应,所述启动控制方式包括:输入密码启动,注册码启动,绑定Mac地址或绑定U盾等方式。通过编写用于不同平台的ClassLoader,可以实现在任意平台上运行加密后的程序。
如图3所示,根据图1所述的方法本申请实施例还提供一种Java源代码加密装置,该装置包括:
函数抽取模块301,用于对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;
包装函数生成模块302,用于将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;
加密文件生成模块303,用于将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端通过发送请求获取所述授权文件后,应用所述Java类加载器解密所述授权文件,并将解密得到的函数的调用信息与所述抽取了函数调用逻辑的Java代码生成源代码文件。
如图4所示,根据图2所示的方法,本申请实施例还提供一种Java源代码解密装置,该装置包括:
授权文件获取模块401,用于当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;
源代码生成模块402,用于接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器,当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
如图5所示,本申请实施例还提供一种Java程序运行控制系统,包括服务器501和用户终端502:
所述服务器501,用于对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件,将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端;
用户终端502,用于当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器,当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
本申请实施例中的上述一个或多个技术方案,至少具有如下的技术效果:
本申请所提供的方法和装置通过抽取Java代码中的函数调用逻辑进行集中加密,使得任何的反编译手段失效。因为本申请实中的类加载器是是与程序的启动方式对应的,所以可以在不需要开发人员参与的条件下,把多种多样的运行控制逻辑注入现有代码,使得本申请加密后的程序源代码具有很高的安全性和易用性。
本申请所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本申请的技术方案得出其它的实施方式,同样属于本申请的技术创新范围。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种Java源代码加密的方法,其特征在于,该方法包括:
对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;
将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;
将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端通过发送请求获取所述授权文件后,应用所述Java类加载器解密所述授权文件,并将解密得到的函数的调用信息与所述抽取了函数调用逻辑的Java代码生成源代码文件。
2.如权利要求1所述的方法,其特征在于,所述java类加载器与所述程序源代码的启动控制方式对应,所述启动控制方式包括:输入密码启动,注册码启动,绑定Mac地址或绑定U盾方式。
3.如权利要求1所述的方法,其特征在于,所述对程序源代码进行逻辑抽出处理的方式包括:
通过抽象语法树对所述源代码进行逻辑抽出处理;或者
通过字节码方式对所述源代码进行逻辑抽出处理。
4.如权利要求1所述的方法,其特征在于,所述第一函数的返回类型与对应位置的原函数的返回类型相同,第一函数中各参数的位置与对应位置的原函数的参数位置不相同。
5.如权利要求1所述的方法,其特征在于,所述第一函数中还包括无效参数。
6.如权利要求1所述的方法,其特征在于,所述类加载器ClassLoader使用C语言实现,则使用JNI在Java中调用C语言实现的类加载器对所述授权文件进行解密操作。
7.一种Java源代码解密方法,其特征在于,包括:
当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;
接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器;
当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
8.一种Java源代码加密装置,其特征在于,该装置包括:
函数抽取模块,用于对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;
包装函数生成模块,用于将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件;
加密文件生成模块,用于将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端,使用户终端通过发送请求获取所述授权文件后,应用所述Java类加载器解密所述授权文件,并将解密得到的函数的调用信息与所述抽取了函数调用逻辑的Java代码生成源代码文件。
9.一种Java源代码解密装置,其特征在于,该装置包括:
授权文件获取模块,用于当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;
源代码生成模块,用于接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器,当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
10.一种Java程序运行控制系统,其特征在于,包括服务器和用户终端:
所述服务器,用于对程序源代码进行逻辑抽出处理,得到源代码中的每个原函数的调用信息和抽取了函数调用逻辑的Java代码;将随机命名的第一函数插入每个原函数在所述程序源代码中的调用位置,并对所述第一函数与所述原函数的调用信息的对应关系进行加密生成授权文件,将所述抽取了函数调用逻辑的Java代码和对应的Java类加载器发送到用户终端;
用户终端,用于当需要运行任一程序源代码时,向服务器发送获取该程序源代码对应授权文件的请求;接收到所述授权文件后,获取所述程序源代码对应的抽取了函数调用逻辑的Java代码和对应的解密所述授权文件的Java类加载器,当所述程序源代码启动时,应用所述Java类加载器解密所述授权文件得到所述程序源代码中的多个函数调用信息,将所述函数调用信息与所述抽取了函数调用逻辑的Java代码组合得到完整的程序源代码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210018203.4A CN103218549B (zh) | 2012-01-19 | 2012-01-19 | 一种Java源代码加解密的方法及装置 |
HK13110803.1A HK1183531A1 (zh) | 2012-01-19 | 2013-09-23 | 種 源代碼加解密的方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210018203.4A CN103218549B (zh) | 2012-01-19 | 2012-01-19 | 一种Java源代码加解密的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218549A true CN103218549A (zh) | 2013-07-24 |
CN103218549B CN103218549B (zh) | 2015-11-25 |
Family
ID=48816326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210018203.4A Expired - Fee Related CN103218549B (zh) | 2012-01-19 | 2012-01-19 | 一种Java源代码加解密的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103218549B (zh) |
HK (1) | HK1183531A1 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810435A (zh) * | 2013-12-23 | 2014-05-21 | 潍柴动力股份有限公司 | 一种Simulink模型的加密和解密方法,及相关装置 |
CN105335151A (zh) * | 2014-08-14 | 2016-02-17 | 优视科技有限公司 | 安装文件的保护方法及装置 |
CN106034119A (zh) * | 2015-03-16 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 应用安装包的加密混淆方法及装置 |
CN106203005A (zh) * | 2016-07-11 | 2016-12-07 | 福建方维信息科技有限公司 | 一种基于web平台软件的多维度授权加密方法及系统 |
CN106548046A (zh) * | 2016-10-25 | 2017-03-29 | 北京深思数盾科技股份有限公司 | 一种保护代码的装置和方法 |
CN106934256A (zh) * | 2015-12-29 | 2017-07-07 | 中移(杭州)信息技术有限公司 | 一种企业数据服务器的保护方法及装置 |
CN107257282A (zh) * | 2017-05-18 | 2017-10-17 | 柚子(北京)移动技术有限公司 | 一种基于rc4算法的代码全包加密方法 |
CN107391973A (zh) * | 2017-07-17 | 2017-11-24 | 北京深思数盾科技股份有限公司 | 一种函数保护方法及装置 |
CN108304187A (zh) * | 2016-08-24 | 2018-07-20 | 北京花甲科技有限公司 | 一种静态库的生成方法以及设备 |
CN109446759A (zh) * | 2018-10-29 | 2019-03-08 | 大唐高鸿信安(浙江)信息科技有限公司 | 一种软件接口保护方法及装置 |
CN110058861A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 源码处理方法及装置、存储介质、电子设备 |
CN110309630A (zh) * | 2019-06-28 | 2019-10-08 | 南京冰鉴信息科技有限公司 | 一种Java代码加密方法及装置 |
CN111159658A (zh) * | 2019-12-16 | 2020-05-15 | 广州三七互娱科技有限公司 | 字节码处理方法、系统、装置、计算机设备和存储介质 |
CN112131536A (zh) * | 2020-05-19 | 2020-12-25 | 北京天德科技有限公司 | 一种防止Java程序被反编译的方法 |
CN112287306A (zh) * | 2020-10-29 | 2021-01-29 | 中国银联股份有限公司 | 一种应用程序安装包的保护方法、装置及计算机可读存储介质 |
CN113221077A (zh) * | 2021-05-31 | 2021-08-06 | 平安科技(深圳)有限公司 | 基于spring容器的class文件加密方法及设备 |
CN113238762A (zh) * | 2021-05-10 | 2021-08-10 | 深圳前海微众银行股份有限公司 | java应用远程部署方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031859A (zh) * | 2004-09-30 | 2007-09-05 | Ttpcom有限公司 | 程序源代码保护 |
JP2008097419A (ja) * | 2006-10-13 | 2008-04-24 | Chugoku Electric Power Co Inc:The | アプリケーション稼働制御システムおよびアプリケーション稼働制御方法 |
CN102043932A (zh) * | 2010-12-31 | 2011-05-04 | 中国航空工业集团公司第六三一研究所 | 一种防止Java程序被反编译的方法 |
-
2012
- 2012-01-19 CN CN201210018203.4A patent/CN103218549B/zh not_active Expired - Fee Related
-
2013
- 2013-09-23 HK HK13110803.1A patent/HK1183531A1/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031859A (zh) * | 2004-09-30 | 2007-09-05 | Ttpcom有限公司 | 程序源代码保护 |
JP2008097419A (ja) * | 2006-10-13 | 2008-04-24 | Chugoku Electric Power Co Inc:The | アプリケーション稼働制御システムおよびアプリケーション稼働制御方法 |
CN102043932A (zh) * | 2010-12-31 | 2011-05-04 | 中国航空工业集团公司第六三一研究所 | 一种防止Java程序被反编译的方法 |
Non-Patent Citations (1)
Title |
---|
张宝国: "基于Java的代码混淆研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 4, 15 April 2009 (2009-04-15) * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810435A (zh) * | 2013-12-23 | 2014-05-21 | 潍柴动力股份有限公司 | 一种Simulink模型的加密和解密方法,及相关装置 |
CN105335151A (zh) * | 2014-08-14 | 2016-02-17 | 优视科技有限公司 | 安装文件的保护方法及装置 |
CN106034119A (zh) * | 2015-03-16 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 应用安装包的加密混淆方法及装置 |
CN106034119B (zh) * | 2015-03-16 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 应用安装包的加密混淆方法及装置 |
CN106934256A (zh) * | 2015-12-29 | 2017-07-07 | 中移(杭州)信息技术有限公司 | 一种企业数据服务器的保护方法及装置 |
CN106203005A (zh) * | 2016-07-11 | 2016-12-07 | 福建方维信息科技有限公司 | 一种基于web平台软件的多维度授权加密方法及系统 |
CN108304187A (zh) * | 2016-08-24 | 2018-07-20 | 北京花甲科技有限公司 | 一种静态库的生成方法以及设备 |
CN106548046A (zh) * | 2016-10-25 | 2017-03-29 | 北京深思数盾科技股份有限公司 | 一种保护代码的装置和方法 |
CN107257282B (zh) * | 2017-05-18 | 2021-01-08 | 柚子(北京)移动技术有限公司 | 一种基于rc4算法的代码全包加密方法 |
CN107257282A (zh) * | 2017-05-18 | 2017-10-17 | 柚子(北京)移动技术有限公司 | 一种基于rc4算法的代码全包加密方法 |
CN107391973A (zh) * | 2017-07-17 | 2017-11-24 | 北京深思数盾科技股份有限公司 | 一种函数保护方法及装置 |
CN109446759B (zh) * | 2018-10-29 | 2021-02-09 | 大唐高鸿信安(浙江)信息科技有限公司 | 一种软件接口保护方法及装置 |
CN109446759A (zh) * | 2018-10-29 | 2019-03-08 | 大唐高鸿信安(浙江)信息科技有限公司 | 一种软件接口保护方法及装置 |
CN110058861A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 源码处理方法及装置、存储介质、电子设备 |
CN110058861B (zh) * | 2019-04-19 | 2020-11-10 | 同盾控股有限公司 | 源码处理方法及装置、存储介质、电子设备 |
CN110309630A (zh) * | 2019-06-28 | 2019-10-08 | 南京冰鉴信息科技有限公司 | 一种Java代码加密方法及装置 |
CN111159658B (zh) * | 2019-12-16 | 2022-04-01 | 广州三七互娱科技有限公司 | 字节码处理方法、系统、装置、计算机设备和存储介质 |
CN111159658A (zh) * | 2019-12-16 | 2020-05-15 | 广州三七互娱科技有限公司 | 字节码处理方法、系统、装置、计算机设备和存储介质 |
CN112131536A (zh) * | 2020-05-19 | 2020-12-25 | 北京天德科技有限公司 | 一种防止Java程序被反编译的方法 |
CN112287306A (zh) * | 2020-10-29 | 2021-01-29 | 中国银联股份有限公司 | 一种应用程序安装包的保护方法、装置及计算机可读存储介质 |
CN112287306B (zh) * | 2020-10-29 | 2024-04-26 | 中国银联股份有限公司 | 一种应用程序安装包的保护方法、装置及计算机可读存储介质 |
CN113238762A (zh) * | 2021-05-10 | 2021-08-10 | 深圳前海微众银行股份有限公司 | java应用远程部署方法、装置及设备 |
CN113238762B (zh) * | 2021-05-10 | 2024-07-02 | 深圳前海微众银行股份有限公司 | java应用远程部署方法、装置及设备 |
CN113221077A (zh) * | 2021-05-31 | 2021-08-06 | 平安科技(深圳)有限公司 | 基于spring容器的class文件加密方法及设备 |
CN113221077B (zh) * | 2021-05-31 | 2023-11-14 | 平安科技(深圳)有限公司 | 基于spring容器的class文件加密方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
HK1183531A1 (zh) | 2013-12-27 |
CN103218549B (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218549B (zh) | 一种Java源代码加解密的方法及装置 | |
CN106599628B (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
CN105612527A (zh) | 为基于通用中间语言的程序提供安全性的方法 | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
RU2439669C2 (ru) | Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения | |
US8090959B2 (en) | Method and apparatus for protecting .net programs | |
CN103413075B (zh) | 一种通过虚拟机保护java可执行程序的方法及设备 | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
US20120079281A1 (en) | Systems and methods for diversification of encryption algorithms and obfuscation symbols, symbol spaces and/or schemas | |
CN109586963B (zh) | 一种云仿真平台安全保障系统、服务器、终端以及方法 | |
CN111159662A (zh) | 一种数据的处理方法和装置 | |
CN102087605A (zh) | 一种基于android平台应用安装控制方法及系统 | |
CN111240654B (zh) | 一种Python代码加固保护的方法及其系统 | |
CN108399319B (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
CN110704854B (zh) | 针对文本数据保留格式的流式加密方法 | |
CN104657670A (zh) | 一种基于数据加密的配置文件安全使用方法 | |
CN104200137A (zh) | 一种保护java程序自身安全的方法 | |
CN109840400B (zh) | 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 | |
CN108133147B (zh) | 可执行代码的保护方法、设备及可读存储介质 | |
CN105825142A (zh) | 用于对移动终端中文档加解密的方法和装置 | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
CN109478212A (zh) | 按需代码解密 | |
CN103605927A (zh) | 一种基于嵌入式Linux系统实现加密和解密方法 | |
CN109040147A (zh) | 一种基于tee+se的加解密的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1183531 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1183531 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151125 Termination date: 20220119 |
|
CF01 | Termination of patent right due to non-payment of annual fee |