买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种Java代码加密方法及装置_南京冰鉴信息科技有限公司_201910575200.2 

申请/专利权人:南京冰鉴信息科技有限公司

申请日:2019-06-28

公开(公告)日:2023-05-30

公开(公告)号:CN110309630B

主分类号:G06F21/14

分类号:G06F21/14;G06F21/60

优先权:

专利状态码:有效-授权

法律状态:2023.05.30#授权;2019.11.01#实质审查的生效;2019.10.08#公开

摘要:本发明提供了一种Java代码加密方法及装置,其中方法包括:在JVM注册本地方法;采用javah命令为N个C程序生成头文件,其中,每个头文件用于声明一个C函数;将每个C程序编译成动态链接库文件,生成M个动态链接库;获取动态链接库加密方式,利用动态链接库加密方式对每个动态链接库进行加密,得到M个加密动态链接库;调用M个动态链接库中与待调用的C函数匹配的C程序,对Java类文件进行加密,得到加密Java文件,其中,加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,指定加密动态链接库为指定动态链接库加密后得到的,指定动态链接库为与待调用的C函数匹配的C程序所在的动态链接库。

主权项:1.一种Java代码加密方法,其特征在于,包括:在JVM注册本地方法;采用javah命令为N个C程序生成头文件,其中,每个所述头文件用于声明一个C函数,每个所述C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数;将每个所述C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数;获取动态链接库加密方式,利用所述动态链接库加密方式对每个所述动态链接库进行加密,得到M个加密动态链接库;调用所述M个动态链接库中与待调用的C函数匹配的C程序,对所述Java类文件进行加密,得到加密Java文件,其中,所述加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,所述指定加密动态链接库为指定动态链接库加密后得到的,其中,所述指定动态链接库为与所述待调用的C函数匹配的C程序所在的动态链接库。

全文数据:一种Java代码加密方法及装置技术领域本发明涉及代码加密技术领域,尤其涉及一种Java代码加密方法及装置。背景技术Java有着简单、跨平台等各种优秀的特性,在软件开发的各个领域得到了大量的应用。Java跨平台的灵活性源于独特的编译方式,Java源代码经过编译后,生成的不是面向处理器的二进制文件而是面向虚拟机的Java类文件。类文件是一种带有格式的中间代码。保留了源代码中大部分的信息。所以可以很容易的通过反编译得到与源代码相差无几的代码。所以,为了保护Java代码的安全性,需要对Java代码做一些加密的措施。现有的Java的安全措施主要从两个方面进行保护,类加载器加密和代码混淆。类加载器加密:由于Java虚拟机每次装入类文件时都需要使用一个类加载器的对象,这个对象负责把新的类装入到Java虚拟机中。Java虚拟机向类加载器提供一个包含待装入类名字的字符串,然后由类加载器负责找到该类文件,并把它转换为一个类对象。利用上述的机制就可以改写类加载器对象,在装入了原始类文件的数据后先进行解密,然后再转换成类对象,由于把原始字节码转换成类对象的过程完全由系统负责,只需要先获得原始数据,接着就可以进行包含解密操作在内的任何转换。这种机制看起来很安全,然而由于类加载器的类是使用Java语言编写的,所以如果把类加载器函数进行反编译,提取其中解密部分的内容,就可以解密所有已经加密的类文件,因为类加载器本身是不可以加密自己的。代码混淆:代码混淆是将代码转换成难以读懂的格式,使破解代码变得较为复杂。典型的代码混淆包括去除所有代码中的调试信息,重命名函数以及变量表,让第三方难以从变量函数名称中得到代码的逻辑。先进的混淆器则通过重构现有的逻辑和插入不执行的伪代码来改变控制流程。混淆的前提是不会破坏字节码的有效性。也不会改变所展示的功能性。虽然通过混淆代码的方法可以在很大程度上增加阅读代码的难度,但是通过对代码逻辑的梳理还是可以得到原始代码的。发明内容本发明旨在提供一种克服上述问题之一或者至少部分地解决上述任一问题的Java代码加密方法及装置。为达到上述目的,本发明的技术方案具体是这样实现的:本发明的一个方面提供了一种Java代码加密方法,包括:在JVM注册本地方法;采用javah命令为N个C程序生成头文件,其中,每个头文件用于声明一个C函数,每个C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数;将每个C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数;获取动态链接库加密方式,利用动态链接库加密方式对每个动态链接库进行加密,得到M个加密动态链接库;调用M个动态链接库中与待调用的C函数匹配的C程序,对Java类文件进行加密,得到加密Java文件,其中,加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,指定加密动态链接库为指定动态链接库加密后得到的,其中,指定动态链接库为与待调用的C函数匹配的C程序所在的动态链接库。其中,方法还包括:获取加密Java文件,确定指定加密动态链接库信息,加载指定加密动态链接库;获取动态链接库解密方式,利用动态链接库解密方式对指定加密动态链接库进行解密,得到指定动态链接库;获取指定动态链接库中的与待调用的C函数匹配的C程序,对加密Java文件进行解密,得到Java类文件;运行Java类文件。其中,获取动态链接库加密方式包括:通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库加密方式;获取动态链接库解密方式包括:通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库解密方式。本发明另一方面提供了一种Java代码加密装置,包括:注册模块,用于在JVM注册本地方法;生成模块,用于采用javah命令为N个C程序生成头文件,其中,每个头文件用于声明一个C函数,每个C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数;第一编译模块,用于将每个C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数;第一加密模块,用于获取动态链接库加密方式,利用动态链接库加密方式对每个动态链接库进行加密,得到M个加密动态链接库;第二加密模块,用于调用M个动态链接库中与待调用的C函数匹配的C程序,对Java类文件进行加密,得到加密Java文件,其中,加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,指定加密动态链接库为指定动态链接库加密后得到的,其中,指定动态链接库为与待调用的C函数匹配的C程序所在的动态链接库。其中,加载模块,用于获取加密Java文件,确定指定加密动态链接库信息,加载指定加密动态链接库;第一解密模块,用于获取动态链接库解密方式,利用动态链接库解密方式对指定加密动态链接库进行解密,得到指定动态链接库;第二解密模块,用于获取指定动态链接库中的与待调用的C函数匹配的C程序,对加密Java文件进行解密,得到Java类文件;运行模块,用于运行Java类文件。其中,第一加密模块通过如下方式获取动态链接库加密方式:第一加密模块,具体用于通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库加密方式;第一解密模块通过如下方式获取动态链接库解密方式:第一解密模块,具体用于通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库解密方式。由此可见,本发明实施例提供的Java代码加密方法及装置,通过JNI调用编译好的动态链接库,使得Java程序可以调用直接运行在操作系统之上的程序,与操作系统直接进行交互而不会通过Java虚拟机与底层交互,解决了JVM平台加密不能完全保护自身的加密方法的缺点。另外,对动态链接库进行加密,保证了动态链接库调用的安全性。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。图1为本发明实施例提供的Java代码加密方法的流程图;图2为本发明实施例提供的Java语言与C语言交互示意图;图3为本发明实施例提供的Java代码加密装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了本发明实施例提供的一种Java代码加密方法的流程图,参见图1,本发明实施例提供的一种Java代码加密方法,包括:S1,在JVM注册本地方法;具体地,本发明需要预先在JVMJavaVirtualMachine,Java虚拟机平台上注册一个本地方法,加密方法就在本地的方法里面,实现的是ByteCodeEncryptor动态库里面的encrypt方法。从而使其可以通过JNIJavaNativeInterface调用编译好的动态链接库,从而实现本发明实施例提供的Java代码加密方法。其中,从JDK1.1开始,JNI标准成为了Java平台的一部分,它允许Java代码和用其他语言编写的代码进行交互。Java与其他语言的交互如图2所示。S2,采用javah命令为N个C程序生成头文件,其中,每个头文件用于声明一个C函数,每个C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数。具体地,使用javah命令为C程序生成头文件。在自动生成的头文件中将声明有待实现的C函数。可以预先在Java中声明将要调用的C函数,从而可以将要调用的C函数载入本地的动态链接库文件。当然,本发明实施例中,需要调用的C函数可以包括一个或多个,因此,可以为仅为一个C程序生成头文件,每次调用时仅调用该C程序实现的函数,也可以为多个C程序生成头文件,从而可以根据头文件来区分不同的C程序,在不同情况下调用不同的函数来实现不同的功能。实际应用中,可以采用javah-jnicom.seaboat.bytecode.ByteCodeEncryptor生成需要的头文件。然后编写源文件,实现头文件声明的函数。S3,将每个C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数。具体地,当C程序有一个时,仅生成一个动态链接库,当C程序有多个时,可以仅生成一个动态链接库,也可以根据需要生成多个动态链接库,这在实际应用中可以根据需要进行设置。实际应用中,可以用cl进行编译,生成动态连接库,并未该动态链接库指定编译需要的一些头文件。Windows环境下的动态链接库为dll文件,Linux环境下的动态链接库为so文件,由于Java通常运行在Linux环境下,所以以下步骤的实际应用可以以so文件为例进行说明。S4,获取动态链接库加密方式,利用动态链接库加密方式对每个动态链接库进行加密,得到M个加密动态链接库;S5,调用M个动态链接库中与待调用的C函数匹配的C程序,对Java类文件进行加密,得到加密Java文件,其中,加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,指定加密动态链接库为指定动态链接库加密后得到的,其中,指定动态链接库为与待调用的C函数匹配的C程序所在的动态链接库。具体地,用Java对即将发布的jar包加密,得到加密之后的jar包。从而完成对Java类文件的加密。作为本发明实施例的一个可选实施方式,在执行步骤S5之前,可以使用Javac命令编译Java类文件。还可以先确定待调用的C函数,之后使用Javac命令编译Java类文件。这在本发明中可以根据实际需要来进行设置。作为本发明实施例的一个可选实施方式,本发明实施例提供的Java代码加密方法还包括:获取加密Java文件,确定指定加密动态链接库信息,加载指定加密动态链接库;获取动态链接库解密方式,利用动态链接库解密方式对指定加密动态链接库进行解密,得到指定动态链接库;获取指定动态链接库中的与待调用的C函数匹配的C程序,对加密Java文件进行解密,得到Java类文件;运行Java类文件。具体地,在运行Java类文件时,需要对加密Java文件进行解密。实际应用中,运行jar包,需要指定所依赖的动态库,以及jar包的入口主方法所在的类,可以使用Agent方式来使用,就是通过-agentlib和-agentpath指定Agent的本地库,然后Java启动时就会加载该动态库。这个时刻其实可以看成是JVM启动的时刻,而并非是Java层程序启动时刻。用反编译工具将加密后的jar包打开后发现,无法正常显示class文件中的源码。运行的时候,Java通过JNI调用外置的ByteCodeEncryptor解密函数。所有的加密解密函数放置在so文件中。So文件是一种二进制文件,通过UltraEdit打开可以看到是一个头文字段为ELF的二进制文件。通过IDAPro可以将so文件通过反汇编的方式看到汇编的代码,还是会有被破解的风险。因此,本发明针对so文件的结构,对so文件中的Section加密进行so的加固。作为本发明实施例的一个可选实施方式,获取动态链接库加密方式包括:通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库加密方式;获取动态链接库解密方式包括:通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库解密方式。通过此种方式,可以提高加密和解密的安全性。实际应用的方案如下:Section是ELF文件的头部信息,修改Section的信息可以起到保护so文件的作用。只需要找到一个Section的base和size就可以对这段Section进行加密了。其中,__attribute__constructor;是一个优先于main方法之前执行的方法,类似于Java中的构造函数,所以这个可以作为解密函数的一个关键点,定义一个解密的函数,然后用这个属性声明就可以了。第一,编写一个简单的native代码,将解密的函数放在代码中:1、将核心的native函数定义在一个section中,包含属性:__attribute__section".mytext";其中.mytext就是定义的section。2、编写解密函数,用属性:__attribute__constructor;声明。由此native程序可以包含两个重要的函数。3、使用ndk编译成so文件。第二、编写加密程序:通过解析so文件,找到.mytext段的起始地址和大小:找到所有的Section,然后获取其name字段,再结合StringSection,遍历找到.mytext字段,找到.mytext段之后,进行加密,最后写入到文件中。第三、获取so的起始地址,获取指定Section的偏移值和size。代码具体可以参见下述代码,由此可获取Section的偏移值和大小。其中,text_addr是起始地址+偏移值,就是section在内存中的绝对地址,nsize是section占用的页数。获取so的起始地址base=getLibAddr;获取指定section的偏移值和sizeehdr=Elf32_Ehdr*base;text_addr=ehdr-e_shoff+base;nblock=ehdr-e_entry16;nsize=ehdr-e_entry&0xffff;第四、修改section的内存操作权限,读取内存中的Section内容,然后进行解密,再将内存权限修改回去,完成Section的加密过程。由此可见,通过本发明实施例提供的Java代码加密方法,利用了JVM平台的特性,利用C++编写加解密Java的算法形成动态链接库,通过JNI调用编译好的动态链接库,使得Java程序可以调用直接运行在操作系统之上的程序,与操作系统直接进行交互而不会通过Java虚拟机与底层交互,解决了JVM平台加密不能完全保护自身的加密方法的缺点。另外,对动态链接库进行加密,保证了动态链接库调用的安全性。同时,将JNI作为一个钩子,在主函数启动前运行钩子函数动态链接库将程序做相应的解码。另外,对动态链接库这一层做了加密,通过动态链接库so文件的Section文件,找到Section的偏移量和文件长度做相应的加密和解密措施。图3示出了本发明实施例提供的Java代码加密装置的结构示意图,该针对Java代码加密装置应用于上述Java代码加密方法,以下仅对Java代码加密装置的结构进行简要说明,其他未尽事宜,请参照上述Java代码加密方法的相关说明,在此不再赘述。参见图3,本发明实施例提供的Java代码加密装置,包括:注册模块,用于在JVM注册本地方法;生成模块,用于采用javah命令为N个C程序生成头文件,其中,每个头文件用于声明一个C函数,每个C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数;编译模块,用于将每个C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数;第一加密模块,用于获取动态链接库加密方式,利用动态链接库加密方式对每个动态链接库进行加密,得到M个加密动态链接库;第二加密模块,用于调用M个动态链接库中与待调用的C函数匹配的C程序,对Java类文件进行加密,得到加密Java文件,其中,加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,指定加密动态链接库为指定动态链接库加密后得到的,其中,指定动态链接库为与待调用的C函数匹配的C程序所在的动态链接库。作为本发明实施例的一个可选实施方式,本发明实施例提供的Java代码加密装置还包括:加载模块,用于获取加密Java文件,确定指定加密动态链接库信息,加载指定加密动态链接库;第一解密模块,用于获取动态链接库解密方式,利用动态链接库解密方式对指定加密动态链接库进行解密,得到指定动态链接库;第二解密模块,用于获取指定动态链接库中的与待调用的C函数匹配的C程序,对加密Java文件进行解密,得到Java类文件;运行模块,用于运行Java类文件。作为本发明实施例的一个可选实施方式,第一加密模块通过如下方式获取动态链接库加密方式:第一加密模块,具体用于通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库加密方式;第一解密模块通过如下方式获取动态链接库解密方式:第一解密模块,具体用于通过各个动态链接库的Section文件,根据Section文件的偏移量和文件长度确定各个动态链接库解密方式。由此可见,通过本发明实施例提供的Java代码加密装置,利用了JVM平台的特性,利用C++编写加解密Java的算法形成动态链接库,通过JNI调用编译好的动态链接库,使得Java程序可以调用直接运行在操作系统之上的程序,与操作系统直接进行交互而不会通过Java虚拟机与底层交互,解决了JVM平台加密不能完全保护自身的加密方法的缺点。另外,对动态链接库进行加密,保证了动态链接库调用的安全性。同时,将JNI作为一个钩子,在主函数启动前运行钩子函数动态链接库将程序做相应的解码。另外,对动态链接库这一层做了加密,通过动态链接库so文件的Section文件,找到Section的偏移量和文件长度做相应的加密和解密措施。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器、CD-ROM、光学存储器等上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备系统、和计算机程序产品的流程图和或方框图来描述的。应理解可由计算机程序指令实现流程图和或方框图中的每一流程和或方框、以及流程图和或方框图中的流程和或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器CPU、输入输出接口、网络接口和内存。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器RAM和或非易失性内存等形式,如只读存储器ROM或闪存flashRAM。存储器是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存PRAM、静态随机存取存储器SRAM、动态随机存取存储器DRAM、其他类型的随机存取存储器RAM、只读存储器ROM、电可擦除可编程只读存储器EEPROM、快闪记忆体或其他内存技术、只读光盘只读存储器CD-ROM、数字多功能光盘DVD或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体transitorymedia,如调制的数据信号和载波。以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

权利要求:1.一种Java代码加密方法,其特征在于,包括:在JVM注册本地方法;采用javah命令为N个C程序生成头文件,其中,每个所述头文件用于声明一个C函数,每个所述C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数;将每个所述C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数;获取动态链接库加密方式,利用所述动态链接库加密方式对每个所述动态链接库进行加密,得到M个加密动态链接库;调用所述M个动态链接库中与待调用的C函数匹配的C程序,对所述Java类文件进行加密,得到加密Java文件,其中,所述加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,所述指定加密动态链接库为指定动态链接库加密后得到的,其中,所述指定动态链接库为与所述待调用的C函数匹配的C程序所在的动态链接库。2.根据权利要求1所述的方法,其特征在于,获取所述加密Java文件,确定所述指定加密动态链接库信息,加载所述指定加密动态链接库;获取动态链接库解密方式,利用所述动态链接库解密方式对所述指定加密动态链接库进行解密,得到指定动态链接库;获取所述指定动态链接库中的与所述待调用的C函数匹配的C程序,对所述加密Java文件进行解密,得到所述Java类文件;运行所述Java类文件。3.根据权利要求2所述的方法,其特征在于,所述获取动态链接库加密方式包括:通过各个动态链接库的Section文件,根据所述Section文件的偏移量和文件长度确定各个所述动态链接库加密方式;所述获取动态链接库解密方式包括:通过各个动态链接库的Section文件,根据所述Section文件的偏移量和文件长度确定各个所述动态链接库解密方式。4.一种Java代码加密装置,其特征在于,包括:注册模块,用于在JVM注册本地方法;生成模块,用于采用javah命令为N个C程序生成头文件,其中,每个所述头文件用于声明一个C函数,每个所述C程序实现各自头文件声明的函数,N为第一预设值,N≥1且为自然数;编译模块,用于将每个所述C程序编译成动态链接库文件,生成M个动态链接库,其中,M为第二预设值,M≥1且为自然数;第一加密模块,用于获取动态链接库加密方式,利用所述动态链接库加密方式对每个所述动态链接库进行加密,得到M个加密动态链接库;第二加密模块,用于调用所述M个动态链接库中与待调用的C函数匹配的C程序,对所述Java类文件进行加密,得到加密Java文件,其中,所述加密Java文件包括指定加密动态链接库的指定加密动态链接库信息,其中,所述指定加密动态链接库为指定动态链接库加密后得到的,其中,所述指定动态链接库为与所述待调用的C函数匹配的C程序所在的动态链接库。5.根据权利要求4所述的装置,其特征在于,加载模块,用于获取所述加密Java文件,确定所述指定加密动态链接库信息,加载所述指定加密动态链接库;第一解密模块,用于获取动态链接库解密方式,利用所述动态链接库解密方式对所述指定加密动态链接库进行解密,得到指定动态链接库;第二解密模块,用于获取所述指定动态链接库中的与所述待调用的C函数匹配的C程序,对所述加密Java文件进行解密,得到所述Java类文件;运行模块,用于运行所述Java类文件。6.根据权利要求5所述的装置,其特征在于,所述第一加密模块通过如下方式获取动态链接库加密方式:所述第一加密模块,具体用于通过各个动态链接库的Section文件,根据所述Section文件的偏移量和文件长度确定各个所述动态链接库加密方式;所述第一解密模块通过如下方式获取动态链接库解密方式:所述第一解密模块,具体用于通过各个动态链接库的Section文件,根据所述Section文件的偏移量和文件长度确定各个所述动态链接库解密方式。

百度查询: 南京冰鉴信息科技有限公司 一种Java代码加密方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。