一种防止java程序被反编译的系统技术方案

技术编号:29223316 阅读:29 留言:0更新日期:2021-07-10 01:05
本发明专利技术涉及一种防止java程序被反编译的系统,包括预设的加密函数、加密密钥、解密密钥和解密函数,处理器和存储有计算机程序的存储器,当所述计算机程序被处理器执行时,实现以下步骤:步骤C1、监测编译器是否将待处理的java源代码全部编译成对应的第一java字节码,若编译完成,则执行步骤C2;步骤C2、扫描所述第一java字节码,若扫描到常量字符串,则调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串;步骤C3、将扫描到的常量字符串替换为所述解密函数的调用,并将所述解密函数对应的调用参数设置为该常量字符串对应的加密字符串。本发明专利技术能够防止java程序被反编译,提高了java程序的安全性。提高了java程序的安全性。提高了java程序的安全性。

【技术实现步骤摘要】
一种防止java程序被反编译的系统


[0001]本专利技术涉及计算机
,尤其涉及一种防止java程序被反编译的系统。

技术介绍

[0002]随着安卓技术的快速发展,开发了大量的安卓应用程序,安卓应用程序通常基于Java语言编写。Java是一种跨平台的、解释型语言,Java编译工具将Java源代码编译成为Java字节码文件,由Java虚拟机负责对Java字节码文件进行解释执行。Java字节码文件中保留了方法名称、变量名称,并且通过这些名称来访问变量和方法,这些符号往往带有许多语义信息。因此,对于基于java编写的应用程序很容易被反编译,得到java源代码。因此为了提高java程序的安全性,避免java程序被反编译,如何提供一种防止java程序被反编译的技术,提高java程序的安全性成为亟待解决的技术问题。

技术实现思路

[0003]本专利技术目的在于,提供一种防止java程序被反编译的系统,能够防止java程序被反编译,提高了java程序的安全性。
[0004]根据本专利技术第一方面,提供了一种防止java程序被反编译系统,包括预设的加密函数、加密密钥、解密密钥和解密函数,处理器和存储有计算机程序的存储器,当所述计算机程序被处理器执行时,实现以下步骤:
[0005]步骤C1、监测编译器是否将待处理的java源代码全部编译成对应的第一java字节码,若编译完成,则执行步骤C2;
[0006]步骤C2、扫描所述第一java字节码,若扫描到常量字符串,则调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串;
[0007]步骤C3、将扫描到的常量字符串替换为所述解密函数的调用,并将所述解密函数对应的调用参数设置为该常量字符串对应的加密字符串。
[0008]本专利技术与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本专利技术提供的一种名称可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
[0009]本专利技术能够增加java程序被反编译的难度,有效防止java程序被反编译,提升了java程序的安全性。
[0010]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
[0011]图1为本专利技术实施例一的防止java程序被反编译流程示意图;
[0012]图2为本专利技术实施例二的防止java程序被反编译流程示意图;
[0013]图3为本专利技术实施例三的防止java程序被反编译流程示意图;
[0014]图4为本专利技术实施例四的防止java程序被反编译流程示意图。
具体实施方式
[0015]为更进一步阐述本专利技术为达成预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术提出的一种名称的具体实施方式及其功效,详细说明如后。
[0016]安卓程序开发的过程中,通常先编写java源代码,再将java源代码编译为java字节码,java字节码存储在class文件中,然后将java字节码编译为dex文件,dex文件是Android系统的可执行文件,包含应用程序的全部操作指令以及运行时数据。若要增加java程序被反编译的难度,防止java程序被反编译,本专利技术实施例提供了一种防止java程序被反编译系统,可在上述任意一个或多个阶段,或者对dex文件进行反编译处理,需要说明的是,本专利技术实施例“所述系统”指的是“防止java程序被反编译系统”。根据本专利技术,所述系统可以物理实现为一个服务器,也可以实现为包括多个服务器的服务器群组。本领域技术人员知晓,服务器的型号、规格等参数并不影响本专利技术的保护范围。
[0017]在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。以下通过几个实施例进行说明:
[0018]实施例一、
[0019]本实施例提供了一种防止java程序被反编译系统,包括每一类DAlvik指令对应的预设DAlvik指令集,处理器和存储有计算机程序的存储器,每一所述预设DAlvik指令集包括多个DAlvik指令和每一DAlvik指令对应的指令id,每一所述预设指令集中的DAlvik指令的指令id由对应DAlvik指令类别的原始DAlvik指令集中的DAlvik指令id打乱排序得到,每一预设DAlvik指令集中的DAlvik的指令id与原始DAlvik指令集中对应的DAlvik指令id均不相同。需要说明的是,DAlvik是用于Android平台的虚拟机的名称,原始DAlvik指令集指的是DAlvik虚拟机中的原始DAlvik指令集。当所述计算机程序被处理器执行时,如图1所示,实现以下步骤:
[0020]步骤A1、从待处理的java字节码中获取所有目标代码段;
[0021]其中,作为示例,所述待处理的java字节码为待处理的安卓APK或SDK对应的class文件中的字节码。
[0022]步骤A2、将每一目标代码段转换为对应的目标dex字节码;
[0023]步骤A3、基于所有类别DAlvik指令对应的预设DAlvik指令集将每一目标dex字节码转换为预设DAlvik指令集能够执行的目标指令集和目标指令集中每一目标指令对应的数据,基于所有目标dex字节码对应的目标指令集和目标指令集中每一目标指令对应的数据生成第一可执行文件,所述第一可执行文件为二进制文件;
[0024]步骤A4、基于所有目标dex字节码与对应的目标指令集中每一目标指令对应的数据的转换关系在SO文件中动态生成目标解释器,其中,Android中的so文件是动态链接库,
是二进制文件,是ELF(Executable and Linking Format)文件中的一种,通过在SO文件中动态生成目标解释器,可以保证被进行防止反编译处理的目标代码段对应的部分正常运行;
[0025]步骤A5、将待处理的java字节码中所有的目标代码段置空,并在每一代码段添加对应的关联标记,得到预处理java字节码,将所述预处理java字节码转换为加固dex文件,所述关联标记用于作为目标解释器的启动标记,以及用于从所述第一可执行文件关联该关联标记对应的目标指令集和目标指令集中每一目标指令对应的数据。其中,关联标记具体可设置为JNI(Java Native Interface,Java本地接口)标记。
[0026]作为一种实施例,在执行所述加固dex文件的过程中,实现以下步骤:
[0027]步骤A6、当执行到关联标记的位置时本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种防止java程序被反编译系统,其特征在于,包括预设的加密函数、加密密钥、解密密钥和解密函数,处理器和存储有计算机程序的存储器,当所述计算机程序被处理器执行时,实现以下步骤:步骤C1、监测编译器是否将待处理的java源代码全部编译成对应的第一java字节码,若编译完成,则执行步骤C2;步骤C2、扫描所述第一java字节码,若扫描到常量字符串,则调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串;步骤C3、将扫描到的常量字符串替换为所述解密函数的调用,并将所述解密函数对应的调用参数设置为该常量字符串对应的加密字符串。2.根据权利要求1所述的系统,其特征在于,还包括Gradle插件,所述Gradle插件中配置有预设回调函数以及所述预设的加密函数、加密密钥、解密密钥和解密函数,所述步骤C1基于Gradle监测编译器是否将待处理的java源代码全部编译成对应的第一java字节码,若编译完成,则采用所述预设回调函数调取所述Gradle插件执行步骤C2;所述步骤C2采用所述Gradle插件扫描所述第一java字节码,若扫描到常量字符串,则调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串;所述步骤C3采用所述Gradle插件将扫描到的常量字符串替换为所述解密函数的调用,并将所述解密函数对应的调用参数设置为该常量字符串对应的加密字符串。3.根据权利要求1所述的系统,其特征在于,所述步骤C2中,所述调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串,包括:步骤C21、将扫描到的常量字符串转换为btye数组,调用所述加密函数将所述btye数组进行加密,得到加密后的btye数组;步骤C22、将加密后的btye数组进行编码得到base64或base128的加密字符串。4.根据权利要求3所述的系统,其特征在于,所述加密函数为AES加密函数,所述解密函数为AES解密函数。5.根据权利要求1所述的系统,其特征在于,当所述计算机程序被处理器执行时,还实现以下步骤:步骤C41、将所述预设解密密钥切分为多段解密密钥段;步骤C42、将所述多段解密密钥段在所述第一java字节码对应的class文件中分散存储;步骤C43、为每一解密密钥段设置一密钥段id,基于每一解密密钥段的密钥段id和对应的存储地址建立密钥段存储表,所述密钥段存储表包括多条密钥段记录,每一密钥段记录的字段包括密钥段id和存储地址;步骤C44、将所述密钥段存储表的记录在所述第一java字节码对应的class文件中分散存储。6.根据权利要求1...

【专利技术属性】
技术研发人员:刘宇方毅叶新江董霖俞锋锋陈文容徐啟东
申请(专利权)人:每日互动股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1