CN113656765A - java程序安全处理方法、装置、计算机设备及存储介质 - Google Patents

java程序安全处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113656765A
CN113656765A CN202110942609.0A CN202110942609A CN113656765A CN 113656765 A CN113656765 A CN 113656765A CN 202110942609 A CN202110942609 A CN 202110942609A CN 113656765 A CN113656765 A CN 113656765A
Authority
CN
China
Prior art keywords
target
obfuscated
code
class
source code
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.)
Pending
Application number
CN202110942609.0A
Other languages
English (en)
Inventor
李欢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An International Smart City Technology Co Ltd
Original Assignee
Ping An International Smart City Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An International Smart City Technology Co Ltd filed Critical Ping An International Smart City Technology Co Ltd
Priority to CN202110942609.0A priority Critical patent/CN113656765A/zh
Publication of CN113656765A publication Critical patent/CN113656765A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开一种java程序安全处理方法、装置、计算机设备及存储介质。该方法包括:获取java源码,对java源码进行编译,获取java源码对应的原始class文件;对原始class文件进行解析,获取原始class文件对应的类路径和至少一个方法源代码,方法源代码包括方法签名和原始方法体;对方法源代码进行加密混淆处理,得到方法体密文,基于类路径、方法签名和方法体密文,获取方法源代码对应的目标混淆变量;保留方法源代码的方法签名,对方法源代码进行清空处理,获取方法源代码对应的方法混淆代码;基于所有方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;基于混淆class文件,封装形成目标Jar包。该方法可保障java源码混淆的安全性和可行性,避免局限性。

Description

java程序安全处理方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种java程序安全处理方法、装置、计算机设备及存储介质。
背景技术
java是一种高层抽象语言,具有易于反汇编特性,其编译后的程序包中包含大量的源代码变量、函数名和数据结构等信息,使得他人可根据编译后的程序包,快速获取与源代码差别不到的反汇编代码。
为了防止源代码泄露,现有技术通过需将java编译后的java源码进行混淆处理,一般是利用“不能直接猜出含义的通用变量名和函数名”,替换编译后的程序包中“具有明显语义信息的变量名和函数名”,以使逆向工程得到难以理解的java源码。这种java源码混淆处理方式存在如下不足:其一是混淆处理具有局限性,即通过变量名和函数名进行混淆处理,在被混淆的java程序被第三方引用时,由于第三方引用只会基于被混淆之前的变量名和函数名进行程序调用,这种混淆处理方式会导致java程序异常,使得混淆后的java程序不能正常运行。其二是混淆处理不能保证代码安全,这种混淆处理方式仅改变变量名和函数名等字符串,没有改变程序逻辑,容易被他人基于程序逻辑,反向推导出其源代码。
发明内容
本发明实施例提供一种java程序安全处理方法、装置、计算机设备及存储介质,以解决现有java源码混淆处理过程中存在的局限性和安全性的问题。
一种java程序安全处理方法,包括:
获取java源码,对所述java源码进行编译,获取所述java源码对应的原始class文件;
对所述原始class文件进行解析,获取所述原始class文件对应的类路径和至少一个方法源代码,所述方法源代码包括方法签名和原始方法体;
对所述方法源代码进行加密混淆处理,得到方法体密文,基于所述类路径、所述方法签名和所述方法体密文,获取所述方法源代码对应的目标混淆变量;
保留所述方法源代码的方法签名,对所述方法源代码进行清空处理,获取所述方法源代码对应的方法混淆代码;
基于所有所述方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;
基于混淆class文件,封装形成目标Jar包。
一种java程序安全处理装置,包括:
源码编译模块,用于获取java源码,对所述java源码进行编译,获取所述java源码对应的原始class文件;
原始文件解析模块,用于对所述原始class文件进行解析,获取所述原始class文件对应的类路径和至少一个方法源代码,所述方法源代码包括方法签名和原始方法体;
加密混淆模块,用于对所述方法源代码进行加密混淆处理,得到方法体密文,基于所述类路径、所述方法签名和所述方法体密文,获取所述方法源代码对应的目标混淆变量;
代码混淆获取模块,用于保留所述方法源代码的方法签名,对所述方法源代码进行清空处理,获取所述方法源代码对应的方法混淆代码;
混淆文件形成模块,用于基于所有所述方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;
目标Jar包封装模块,用于基于混淆class文件,封装形成目标Jar包。
一种java程序安全处理方法,包括:
获取目标Jar包,对所述目标Jar包进行解析,获取所述目标Jar包对应的混淆class文件;
对所述混淆class文件进行解析,获取目标混淆变量和方法混淆代码,所述目标混淆变量包括类路径、方法签名和方法体密文,所述方法混淆代码包含方法签名和空白方法体;
对所述目标混淆变量的方法体密文进行解密处理,获取所述目标混淆变量对应的方法体明文;
将所述目标混淆变量对应的方法体明文,替换与所述类路径和所述方法签名相对应的方法混淆代码的空白方法体,获取所述方法混淆代码还原的方法源代码;
基于所有所述方法混淆代码还原的方法源代码,获取原始class文件,采用类加载器加载所述原始class文件。
一种java程序安全处理装置,包括:
混淆文件获取模块,用于获取目标Jar包,对所述目标Jar包进行解析,获取所述目标Jar包对应的混淆class文件;
混淆文件解析模块,用于对所述混淆class文件进行解析,获取目标混淆变量和方法混淆代码,所述目标混淆变量包括类路径、方法签名和方法体密文,所述方法混淆代码包含方法签名和空白方法体;
混淆变量解密模块,用于对所述目标混淆变量的方法体密文进行解密处理,获取所述目标混淆变量对应的方法体明文;
混淆代码还原模块,用于将所述目标混淆变量对应的方法体明文,替换与所述类路径和所述方法签名相对应的方法混淆代码的空白方法体,获取所述方法混淆代码还原的方法源代码;
原始文件获取模块,用于基于所有所述方法混淆代码还原的方法源代码,获取原始class文件,采用类加载器加载所述原始class文件。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述java程序安全处理方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述java程序安全处理方法。
上述java程序安全处理方法、装置、计算机设备及存储介质,可解析java源码编译形成的原始class文件,获取类路径和至少一个方法源代码。对方法源代码进行加密混淆处理得到方法体密文,以获取密文形式的代码信息,再基于类路径、方法签名和方法体密文,获取方法源代码对应的目标混淆变量,使得目标混淆变量既包含方法体密文,且包含类路径和方法签名等可唯一指向某一特定的方法源代码的信息,可保障目标混淆变量的安全性且唯一指向性。采用保留方法源代码的方法签名并对方法源代码进行清空处理这种混淆处理方式,可保障获取到的方法混淆代码中不包含明文形式的原始方法体,以避免他人利用反编译工具逆向破解方法混淆代码,从而保障方法混淆代码的安全性,且方法混淆代码保留方法签名,可唯一指向特定的方法源代码,可保障java程序的正常运行。再基于所有方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件,使得混淆class文件中包含目标混淆变量和方法混淆代码,而不包含方法源代码,使得混淆class文件不易被反编译工具反向推导出真实的方法源代码,从而保障混淆class文件的安全性,且目标混淆变量和方法混淆代码可还原解析出方法源代码,以保障基于混淆class文件形成的目标Jar包的可运行性,避免混淆处理所导致无法被第三方引用的情况发生。由于目标混淆变量的类路径和方法签名,可唯一指向混淆class文件中特定的方法源代码,使得混淆class文件形成的目标Jar包在被引用时,可保障其java程序的可运行性,即在目标Jar包运行过程中不会改变目标Jar包,避免混淆处理的局限性。
上述java程序安全处理方法、装置、计算机设备及存储介质,对目标Jar包解析出的混淆class文件进行解析,以获取目标混淆变量和方法混淆代码,由于目标混淆变量中包含方法体密文,而方法混淆代码包含空白方法体,使得他人利用反编译工具进行反编译处理时也不能获取到真实的源代码,从而保障java程序的安全性。先对目标混淆变量的方法体密文进行解密处理,再将解密处理得到的方法体明文,填充到与其类路径和方法签名相匹配的方法混淆代码的空白方法体中,实现将方法混淆代码还原成方法源代码,进而形成原始class文件,以保障java程序的可运行性。由于目标混淆变量的类路径和方法签名,可唯一指向混淆class文件中特定的方法源代码,使得混淆class文件形成的目标Jar包在被引用时,可保障其java程序的可运行性,即在目标Jar包运行过程中不会改变目标Jar包,避免混淆处理的局限性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中java程序安全处理方法的一示意图;
图2是本发明一实施例中java程序安全处理方法的一流程图;
图3是本发明一实施例中java程序安全处理方法的另一流程图;
图4是本发明一实施例中java程序安全处理方法的另一流程图;
图5是本发明一实施例中java程序安全处理方法的另一流程图;
图6是本发明一实施例中java程序安全处理方法的另一流程图;
图7是本发明一实施例中java程序安全处理方法的另一流程图;
图8是本发明一实施例中java程序安全处理装置的一示意图;
图9是本发明一实施例中java程序安全处理装置的另一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的java程序安全处理方法,该java程序安全处理方法可应用如图1所示的计算机设备中。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行java程序安全处理方法过程中采用或生成的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种java程序安全处理方法。本示例中,计算机设备可以为执行java程序编译的java编译设备,也可以为实现java程序运行处理的java运行设备。
由于Jar包是由class文件组成的特殊文件,而class文件本身是具有特定规律的语法结构,可利用java agent(代理)探针原理,即利用java agent(代理),在基于java语言编写的main()方法之前设置一个拦截器(Interceptor),可实现在执行main()方法之前,先执行java agent程序。本示例中,主要利用java S1E 5的新特性,利用java.lang.inS1trument做动态InS1trumentation,使开发者可以构建独立于应用程序的java agent程序,用来监测运行在JVM上的程序,甚至可以动态的修改和替换类的定义,而不必去修改应用程序的配置,也不必重新打包部署验证。
可理解地,由于Jar包是由class文件组成的特殊文件,而class文件具有特定规律,基于java agent程序,在java源码被编译打包时,利用class文件的特定规律,改变class文件的内容,将java源码对应的原始class文件进行混淆并加密,获取混沌class文件,采用混淆class文件替换原始class文件,以使反编译软件失败。在Jar包被加载使用之前,基于java agent程序的探针原理,可将混淆class文件动态还原成Jar包中的原始class文件,以达到黑客利用反编译手段也看不到java源码的目的,从而保障java源码的安全性。
在一实施例中,如图2所示,提供一种java程序安全处理方法,可在java应用编译打包环节对java源码进行混淆处理,以起到保障java源码安全的目的。以该方法应用在java编译设备为例进行说明,包括如下步骤:
S201:获取java源码,对java源码进行编译,获取java源码对应的原始class文件;
S202:对原始class文件进行解析,获取原始class文件对应的类路径和至少一个方法源代码,方法源代码包括方法签名和原始方法体;
S203:对方法源代码进行加密混淆处理,得到方法体密文,基于类路径、方法签名和方法体密文,获取方法源代码对应的目标混淆变量;
S204:保留方法源代码的方法签名,对方法源代码进行清空处理,获取方法源代码对应的方法混淆代码;
S205:基于所有方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;
S206:基于混淆class文件,封装形成目标Jar包。
其中,java源码是指采用java工具编写的源代码,是未经混淆处理的源代码。原始class文件是指未经混淆处理的class文件,是对java源码进行编译处理直接获取到的class文件。
作为一示例,步骤S201中,java编译设备可获取基于java工具编写的java源码,再采用常规编译技术,对java源码进行编译处理,以获取该java源码对应的所有原始class文件。例如,java编译设备对java源码进行编译后获取到的一个原始class文件为class.A,class.A的代码如下:
Figure BDA0003215447790000061
Figure BDA0003215447790000071
其中,类路径是java运行时与文件系统之间的连接,它定义了编译器和解释器在何处查找要加载的.class文件。方法源代码是原始class文件中每个方法对应的代码内容,是指未经混淆的源代码。一般来说,原始class文件是由多个方法源代码基于特定代码执行顺序排序的多个方法源代码的组合,每一方法源代码均对应有方法签名、原始方法体和类路径等代码信息。方法签名是用于唯一识别某一方法源代码的信息,包括方法类型、数据类型、方法名称和方法变量等信息。原始方法体是指每个方法源代码中用于实现代码功能的具体代码。
作为一示例,步骤S202中,由于原始class文件中的每个方法源代码均采用方法签名和原始方法体这种特定格式的代码,使得java编译设备可采用但不限于格式匹配算法,对java源码对应的原始class文件进行解析,获取该原始class文件对应的类路径和至少一个方法源代码,方法源代码包括方法签名和原始方法体。上述示例中的方法源代码中,public int S1um(int a,int b,int c)为class.A中的一个方法源代码的方法签名,设置在public int S1um(int a,int b,int c)之后的“{}”之间的代码内容为其原始方法体。
例如,java编译设备可解析获取到的原始class文件,解析出原始class文件中的常量信息、类信息、接口信息、字段信息、方法信息和新增属性等信息,从中获取到原始class文件对应的类路径和至少一个方法源代码,方法源代码包括方法签名和原始方法体。
其中,目标混淆变量是指利用原始class文件对应的类路径对方法源代码进行加密混淆处理之后形成的变量,该目标混淆变量包含类路径和方法源代码混淆后的方法体密文等信息。
作为一示例,步骤S203中,java编译设备可执行预先配置的加密处理程序,采用但不限于非对称加密算法或者其他加密算法,对方法源代码进行加密处理,具体可以对方法源代码中的原始方法体进行加密,形成方法源代码对应的方法体密文。接着,java编译设备可根据预先配置的变量拼接规则,将原始class文件对应的类路径、方法源代码对应的方法签名和方法体密文进行拼接,以形成特定格式的目标混淆变量。可理解地,由于每一方法源代码对应的目标混淆变量包括原始class文件对应的类路径和方法源代码对应的方法签名,可唯一指向某一具体方法签名对应的方法源代码;由于采用非对称加密算法或者其他加密算法对方法源代码进行加密,使得方法源代码转换成方法体密文形式,从而起到保护方法源代码的目的。
作为一示例,步骤S204中,java编译设备可执行预先配置的混淆处理程序,对方法源代码进行混淆处理,具体为保留方法源代码的方法签名,对方法源代码进行清空处理,获取方法源代码对应的方法混淆代码,即方法混淆代码包括方法签名和空白方法体,此处的空白方法体可理解为使方法混淆代码中的方法体区域为空白,没有填充原始方法体。可理解地,将每一方法源代码的方法签名保留,将每一方法源代码的原始方法体删除,在java程序运行时,可基于该方法签名唯一指向真实的方法源代码,从而保障java程序的正常运行;由于方法混淆代码中不包含原始方法体,可使他人利用反编译工具进行反编译处理时也不能获取到真实的源代码,从而保障java程序的安全性。
Figure BDA0003215447790000081
其中,混淆class文件是指原始class文件进行混淆处理后形成的class文件。
作为一示例,步骤S205中,java编译设备可将原始class文件中,所有方法源代码对应的目标混淆变量和方法混淆代码,组合形成混淆class文件。可理解地,该混淆class文件是指将方法源代码替换为方法混淆代码,且在混淆class文件中增加目标混淆变量所形成的class文件。
作为一示例,步骤S206中,java编译设备可采用常规的java打包插件,对获取到的混淆class文件进行打包封装,形成目标Jar包。该目标Jar包是指混淆class文件打包封装形成的Jar包。
本实施例所提供的java程序安全处理方法中,可解析java源码编译形成的原始class文件,获取类路径和至少一个方法源代码。对方法源代码进行加密混淆处理得到方法体密文,以获取密文形式的代码信息,再基于类路径、方法签名和方法体密文,获取方法源代码对应的目标混淆变量,使得目标混淆变量既包含方法体密文,且包含类路径和方法签名等可唯一指向某一特定的方法源代码的信息,可保障目标混淆变量的安全性且唯一指向性。采用保留方法源代码的方法签名并对方法源代码进行清空处理这种混淆处理方式,可保障获取到的方法混淆代码中不包含明文形式的原始方法体,以避免他人利用反编译工具逆向破解方法混淆代码,从而保障方法混淆代码的安全性,且方法混淆代码保留方法签名,可唯一指向特定的方法源代码,可保障java程序的正常运行。再基于所有方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件,使得混淆class文件中包含目标混淆变量和方法混淆代码,而不包含方法源代码,使得混淆class文件不易被反编译工具反向推导出真实的方法源代码,从而保障混淆class文件的安全性,且目标混淆变量和方法混淆代码可还原解析出方法源代码,以保障基于混淆class文件形成的目标Jar包的可运行性,避免混淆处理所导致无法被第三方引用的情况发生。由于目标混淆变量的类路径和方法签名,可唯一指向混淆class文件中特定的方法源代码,使得混淆class文件形成的目标Jar包在被引用时,可保障其java程序的可运行性,即在目标Jar包运行过程中不会改变目标Jar包,避免混淆处理的局限性。
在一实施例中,如图3所示,步骤S203,即对方法源代码进行加密混淆处理,得到方法体密文,基于类路径、方法签名和方法体密文,获取方法源代码对应的目标混淆变量,包括:
S301:获取java源码对应的目标公钥,采用目标公钥对方法源代码的原始方法体进行加密,得到方法体密文;
S302:将类路径和方法签名拼接形成目标健,将方法体密文确定为目标健,将目标健和目标健形成的键值对,确定为方法源代码对应的目标混淆变量。
作为一示例,步骤S301中,java编译设备可基于java源码对应的程序标识形成密钥申请请求,将密钥申请请求发送给密钥管理中心,以使密钥管理中心生成与程序标识相匹配的目标密钥对,目标密钥对包括目标公钥和目标私钥。java编译设备可获取密钥管理中心发送的目标公钥,采用目标公钥对方法源代码中的原始方法体进行加密,以获取到原始方法体对应的方法体密文。本示例中,java编译设备可采用非对称加密算法,利用目标公钥对方法源代码中的原始方法体进行加密,将明文形式的原始方法体转换成密文形式的方法体密文,以起到对方法源代码中的原始方法体进行加密保护的目的,以避免他人通过反编译工具可直接获取原始方法体中的处理逻辑。其中,程序标识是用于唯一识别某一java源码对应的java程序的标识。
作为一示例,步骤S302中,java编译设备可执行混淆变量生成程序,将原始class文件对应的类路径和方法源代码中的方法签名,拼接形成目标健;并将原始方法体对应的方法体密文确定为目标健;将目标健和目标健形成的键值对,确定为目标混淆变量,即最终形成的目标混淆变量具体采用“类路径方法签名-方法体密文”这种键值对形式表示。
本实施例所提供的java程序安全处理方法,对方法源代码中需要保密处理的原始方法体进行加密混淆处理得到方法体密文,以获取密文形式的方法体密文,以起到保护方法源代码中的原始方法体的目的,避免java程序容易反编译而导致泄露风险;将类路径、方法签名和方法体密文,依据键值对方式进行拼接,获取方法源代码对应的目标混淆变量,使得目标混淆变量既包含方法体密文,且包含类路径和方法签名等可唯一指向某一特定方法源代码的信息,可保障目标混淆变量的安全性且唯一指向性,可利用目标混淆变量和方法混淆代码,还原方法源代码,进而保障java程序的可运行性。
在一实施例中,如图4所示,步骤S205中,基于所有方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件,包括:
S401:基于所有方法源代码对应的目标混淆变量,获取class文件变量;
S402:依据至少一个方法源代码对应的代码执行顺序,对至少一个方法源代码对应的方法混淆代码进行排序,获取class文件代码;
S403:根据class文件变量和class文件代码,形成混淆class文件。
作为一示例,步骤S401中,java编译设备将所有方法源代码对应的目标混淆变量,确定为最终形成的混淆class文件中的class文件变量,该class文件变量可以理解为所有方法源代码对应的目标混淆变量的集合。本示例中,class文件变量需在执行混淆class文件的main()方法之前执行,以便在java程序运行过程中,可在执行main()方法之前,先解密目标混淆变量,以将密文形式的方法体密文转换成明文形式的方法源代码的原始方法体,从而保障最终封装形成的目标Jar包的可运行性。
作为一示例,步骤S402中,java编译设备可根据原始class文件解析出的至少一个方法源代码的代码执行顺序,对至少一个方法源代码对应的方法混淆代码进行排序,以形成class文件代码,该class文件代码包括依据代码执行顺序的至少一个方法混淆代码,可在至少两个方法混淆代码之间的执行结果存在依赖关系时,保障基于class文件代码形成的混淆class文件封装形成的目标Jar包的可运行性。
作为一示例,步骤S403中,java编译设备可基于class文件变量和class文件代码,形成混淆class文件,具体可将class文件变量放置在class文件代码中的main()方法之前,由变量标记符“//”所限定的变量定义区域内,形成混淆class文件。
本实施例所提供的java程序安全处理方法,根据所有目标混淆变量形成的class文件变量和所有方法混淆代码排序形成的class文件代码,形成混淆class文件。例如,可将class文件变量设置在class文件代码之前,形成混淆class文件,以保障java程序运行过程中,先对class文件变量中的目标混淆变量进行解密,以获取解密后的类路径、方法签名和明文形式的原始方法体等明文信息,再利用目标混淆变量的明文信息对class文件代码中的方法混淆代码进行还原,从而获取还原的方法源代码,以保障java程序的可运行性和安全性。
在一实施例中,如图5所示,提供一种java程序安全处理方法,可在java应用运行过程中,对经过加密混淆处理的混淆class文件进行还原解密处理。以该方法应用在java运行设备为例进行说明,包括如下步骤:
S501:获取目标Jar包,对目标Jar包进行解析,获取目标Jar包对应的混淆class文件;
S502:对混淆class文件进行解析,获取目标混淆变量和方法混淆代码,目标混淆变量包括类路径、方法签名和方法体密文,方法混淆代码包含方法签名和空白方法体;
S503:对目标混淆变量的方法体密文进行解密处理,获取目标混淆变量对应的方法体明文;
S504:将目标混淆变量对应的方法体明文,替换与类路径和方法签名相对应的方法混淆代码的空白方法体,获取方法混淆代码还原的方法源代码;
SS505:基于所有方法混淆代码还原的方法源代码,获取原始class文件,采用类加载器加载原始class文件。
其中,该目标Jar包是指混淆class文件打包封装形成的Jar包。
作为一示例,步骤S501中,java运行设备可获取目标Jar包,采用常规解析技术,对目标Jar包进行解析,以获取目标Jar包对应的混淆class文件。该混淆class文件是指原始class文件进行混淆处理后形成的class文件。
其中,目标混淆变量是指利用原始class文件对应的类路径对方法源代码进行加密混淆处理之后形成的变量,该目标混淆变量包含类路径、方法签名和方法源代码混淆后的方法体密文等信息。该方法混淆代码是指对方法源代码进行混淆处理后的代码。
作为一示例,步骤S502中,java运行设备可执行java agent程序,先采用格式匹配算法,从混淆class文件中,解析出所有目标混淆变量和与每一目标混淆变量相匹配的方法混淆代码,以便利用目标混淆变量对与其相匹配的方法混淆代码进行还原,从而获取还原得到的方法源代码。
例如,java运行设备可采用格式匹配算法或者其他匹配算法,对混淆class文件进行解析,以获取混淆class文件中的class文件变量和class文件代码,从class文件变量中获取所有目标混淆变量,从class文件代码中获取所有方法混淆代码。该class文件变量为混淆class文件中所有目标混淆变量的集合。该class文件代码为混淆class文件中所有方法混淆代码基于代码执行顺序排序形成的代码。
本示例中,混淆class文件解析出的方法混淆代码中包含方法签名和空白方法体,而不包含原始方法体,使得他人利用反编译工具进行反编译处理时也不能获取到真实的源代码,从而保障java程序的安全性。
作为一示例,步骤S503中,目标混淆变量包含基于特定格式拼接的类路径、方法源代码对应的方法签名和方法体密文等信息,java运行设备需解析识别出目标混淆变量中的类路径、方法签名和方法体密文等信息,并对其中的方法体密文进行解密处理,从而获取到目标混淆变量中的类路径、方法签名和方法体明文等明文信息,以便利用目标混淆变量对应的明文信息对方法混淆代码进行还原,从而保障java程序的可运行性。
作为一示例,步骤S504中,每一混淆class文件中的方法混淆代码均包括方法签名和空白方法体,此处的空白方法体为在java编译过程中对方法源代码中的原始方法体进行清空处理后形成的空白内容。在java程序运行过程中,java运行设备可将目标混淆变量解密出的方法体明文,替换与目标混淆变量中的类路径和方法签名相匹配的方法混淆代码的空白方法体,即将方法体明文填充在方法混淆代码的空白方法体内,获取方法混淆代码还原的方法源代码。
作为一示例,步骤S505中,java运行设备可根据所有方法混淆代码还原的方法源代码,获取混淆class文件还原出的原始class文件,接着,采用常规类加载器加载该原始class文件。
本实施例所提供的java程序安全处理方法中,对目标Jar包解析出的混淆class文件进行解析,以获取目标混淆变量和方法混淆代码,由于目标混淆变量中包含方法体密文,而方法混淆代码包含空白方法体,使得他人利用反编译工具进行反编译处理时也不能获取到真实的源代码,从而保障java程序的安全性。先对目标混淆变量的方法体密文进行解密处理,再将解密处理得到的方法体明文,填充到与其类路径和方法签名相匹配的方法混淆代码的空白方法体中,实现将方法混淆代码还原成方法源代码,进而形成原始class文件,以保障java程序的可运行性。由于目标混淆变量的类路径和方法签名,可唯一指向混淆class文件中特定的方法源代码,使得混淆class文件形成的目标Jar包在被引用时,可保障其java程序的可运行性,即在目标Jar包运行过程中不会改变目标Jar包,避免混淆处理的局限性。
在一实施例中,如图6所示,步骤S503,即对目标混淆变量进行解密还原,获取目标混淆变量对应的类路径、方法签名和方法体明文,包括:
S601:对目标混淆变量进行解析,获取目标混淆变量对应的类路径、方法签名和方法体密文;
S602:获取目标Jar包对应的目标私钥,采用目标私钥对方法体密文进行解密,获取目标混淆变量对应的方法体明文。
作为一示例,步骤S601中,由于目标混淆变量是采用预先配置的变量拼接规则,将原始class文件对应的类路径、方法源代码对应的方法签名和方法体密文进行拼接形成的特定格式的变量,因此,java运行设备可采用与该特定格式相匹配的格式匹配算法,对每一目标混淆变量进行解析,提取出每一目标混淆变量对应的类路径、方法签名和方法体密文等变量信息,以便后续利用这些变量信息对方法混淆代码进行解密还原处理。
例如,目标混淆变量是采用“类路径方法签名-方法体密文”这种键值对形式表示的变量,java运行设备可采用格式匹配算法,对目标混淆变量进行格式匹配,以解析获取到该目标混淆变量对应的类路径、方法签名和方法体密文等信息。
作为一示例,步骤S602中,java运行设备可基于目标Jar包对应的程序标识形成密钥查询请求,将密钥查询请求发送给密钥管理中心,从密钥管理中心获取与程序标识相对应的目标私钥;再采用目标私钥对目标混淆变量中的方法体密文进行解密,以获取目标混淆变量对应的方法体明文。
本实施例所提供的java程序安全处理方法中,目标混淆变量中包含原始方法体进行加密混淆处理得到方法体密文,避免java程序被反编译而导致泄露风险,仅在java程序运行过程中利用目标私钥才可获取方法体明文,从而起到保护方法源代码中的原始方法体的目的。目标混淆变量中包含类路径和方法签名等可唯一指向某一特定方法源代码的信息,可在java程序运行过程中,基于类路径和方法签名唯一指向与其关联的方法混淆代码,进而利用解密获取到的方法体明文,对与其关联的方法混淆代码进行还原处理,以获取还原所得的方法源代码,从而保障java程序的可运行性。
在一实施例中,如图7所示,步骤S504,即将目标混淆变量对应的方法体明文,替换与类路径和方法签名相对应的方法混淆代码的空白方法体,获取方法混淆代码还原的方法源代码,包括:
S701:基于目标混淆变量对应的类路径和方法签名,确定与类路径和方法签名相匹配的目标混淆代码,目标混淆代码包括方法签名和空白方法体;
S702:将目标混淆变量对应的方法体明文,替换目标混淆代码对应的空白方法体,获取目标混淆代码还原的方法源代码。
作为一示例,步骤S701中,java运行设备可根据目标混淆变量解析出的类路径和方法签名,先定位搜索到与类路径和方法签名相匹配的目标混淆代码,该目标混淆代码可以理解为某一目标混淆变量的类路径和方法签名相匹配的方法混淆代码。可理解地,若java运行设备根据解析到的目标混淆变量对应的类路径和方法签名,无法确定与该类路径和方法签名相匹配的目标混淆代码,则认定混淆class文件有误,无法正常运行。
作为一示例,步骤S702中,java运行设备可将目标混淆变量解密出的方法体明文,替换与目标混淆变量中的类路径和方法签名相匹配的目标混淆代码的空白方法体,即将方法体明文填充在目标混淆代码的空白方法体内,获取目标混淆代码还原的方法源代码。
本示例中,方法混淆代码的还原过程,利用目标混淆变量中的类路径和方法签名,与混淆class文件中每一方法混淆代码的方法签名一一对应,可利用目标混淆变量解密出的方法体明文,替换类路径和方法签名唯一指向的目标混淆代码对应的空白方法体,以实现利用目标混淆变量对目标混淆代码进行还原处理。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种java程序安全处理装置,该java程序安全处理装置与上述实施例中java程序安全处理方法一一对应。如图8所示,该java程序安全处理装置包括源码编译模块801、原始文件解析模块802、加密混淆模块803、代码混淆获取模块804、混淆文件形成模块805和目标Jar包封装模块806。各功能模块详细说明如下:
源码编译模块801,用于获取java源码,对java源码进行编译,获取java源码对应的原始class文件;
原始文件解析模块802,用于对原始class文件进行解析,获取原始class文件对应的类路径和至少一个方法源代码,方法源代码包括方法签名和原始方法体;
加密混淆模块803,用于对方法源代码进行加密混淆处理,得到方法体密文,基于类路径、方法签名和方法体密文,获取方法源代码对应的目标混淆变量;
代码混淆获取模块804,用于保留方法源代码的方法签名,对方法源代码进行清空处理,获取方法源代码对应的方法混淆代码;
混淆文件形成模块805,用于基于所有方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;
目标Jar包封装模块806,用于基于混淆class文件,封装形成目标Jar包。
在一实施例中,加密混淆模块803,包括:
方法体密文获取单元,用于获取java源码对应的目标公钥,采用目标公钥对方法源代码的原始方法体进行加密,得到方法体密文;
目标混淆变量确定单元,用于将类路径和方法签名拼接形成目标健,将方法体密文确定为目标健,将目标健和目标健形成的键值对,确定为方法源代码对应的目标混淆变量。
在一实施例中,混淆文件形成模块805,包括:
文件变量获取单元,用于基于所有方法源代码对应的目标混淆变量,获取class文件变量;
文件代码获取单元,用于依据至少一个方法源代码对应的代码执行顺序,对至少一个方法源代码对应的方法混淆代码进行排序,获取class文件代码;
混淆文件形成单元,用于根据class文件变量和class文件代码,形成混淆class文件。
在一实施例中,提供一种java程序安全处理装置,该java程序安全处理装置与上述实施例中java程序安全处理方法一一对应。如图9所示,该java程序安全处理装置包括混淆文件获取模块901、混淆文件解析模块902、混淆变量解密模块903、混淆代码还原模块904和原始文件获取模块905。各功能模块详细说明如下:
混淆文件获取模块901,用于获取目标Jar包,对目标Jar包进行解析,获取目标Jar包对应的混淆class文件;
混淆文件解析模块902,用于对混淆class文件进行解析,获取目标混淆变量和方法混淆代码,目标混淆变量包括类路径、方法签名和方法体密文,方法混淆代码包含方法签名和空白方法体;
混淆变量解密模块903,用于对目标混淆变量的方法体密文进行解密处理,获取目标混淆变量对应的方法体明文;
混淆代码还原模块904,用于将目标混淆变量对应的方法体明文,替换与类路径和方法签名相对应的方法混淆代码的空白方法体,获取方法混淆代码还原的方法源代码;
原始文件获取模块905,用于基于所有方法混淆代码还原的方法源代码,获取原始class文件,采用类加载器加载原始class文件。
在一实施例中,混淆变量解密模块903,包括:
混淆变量解析单元,用于对目标混淆变量进行解析,获取目标混淆变量对应的类路径、方法签名和方法体密文;
方法体密文解密单元,用于获取目标Jar包对应的目标私钥,采用目标私钥对方法体密文进行解密,获取目标混淆变量对应的方法体明文。
在一实施例中,混淆代码还原模块904,包括:
混淆代码确定单元,用于基于目标混淆变量对应的类路径和方法签名,确定与类路径和方法签名相匹配的目标混淆代码,目标混淆代码包括方法签名和空白方法体;
混淆代码还原单元,用于将目标混淆变量对应的方法体明文,替换目标混淆代码对应的空白方法体,获取目标混淆代码还原的方法源代码。
关于java程序安全处理装置的具体限定可以参见上文中对于java程序安全处理方法的限定,在此不再赘述。上述java程序安全处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中java程序安全处理方法,例如图2所示S201-S206,或者图3至图5中所示,又例如图5所示S501-S505,或者图6至图7中所示,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现java程序安全处理装置这一实施例中的各模块/单元的功能,例如图8所示的源码编译模块801、原始文件解析模块802、加密混淆模块803、代码混淆获取模块804、混淆文件形成模块805和目标Jar包封装模块806的功能,又例如图9所示的混淆文件获取模块901、混淆文件解析模块902、混淆变量解密模块903、混淆代码还原模块904和原始文件获取模块905的功能,为避免重复,这里不再赘述。
在一实施例中,提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中java程序安全处理方法,例如图2所示S201-S206,或者图3至图5中所示,又例如图5所示S501-S505,或者图6至图7中所示,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现上述java程序安全处理装置这一实施例中的各模块/单元的功能,例如图8所示的源码编译模块801、原始文件解析模块802、加密混淆模块803、代码混淆获取模块804、混淆文件形成模块805和目标Jar包封装模块806的功能,又例如图9所示的混淆文件获取模块901、混淆文件解析模块902、混淆变量解密模块903、混淆代码还原模块904和原始文件获取模块905的功能,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种java程序安全处理方法,其特征在于,包括:
获取java源码,对所述java源码进行编译,获取所述java源码对应的原始class文件;
对所述原始class文件进行解析,获取所述原始class文件对应的类路径和至少一个方法源代码,所述方法源代码包括方法签名和原始方法体;
对所述方法源代码进行加密混淆处理,得到方法体密文,基于所述类路径、所述方法签名和所述方法体密文,获取所述方法源代码对应的目标混淆变量;
保留所述方法源代码的方法签名,对所述方法源代码进行清空处理,获取所述方法源代码对应的方法混淆代码;
基于所有所述方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;
基于混淆class文件,封装形成目标Jar包。
2.如权利要求1所述的java程序安全处理方法,其特征在于,所述对所述方法源代码进行加密混淆处理,得到方法体密文,基于所述类路径、所述方法签名和所述方法体密文,获取所述方法源代码对应的目标混淆变量,包括:
获取所述java源码对应的目标公钥,采用所述目标公钥对所述方法源代码的原始方法体进行加密,得到方法体密文;
将所述类路径和所述方法签名拼接形成目标健,将所述方法体密文确定为目标健,将所述目标健和所述目标健形成的键值对,确定为所述方法源代码对应的目标混淆变量。
3.如权利要求1所述的java程序安全处理方法,其特征在于,所述基于所有所述方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件,包括:
基于所有所述方法源代码对应的目标混淆变量,获取class文件变量;
依据至少一个方法源代码对应的代码执行顺序,对至少一个方法源代码对应的方法混淆代码进行排序,获取class文件代码;
根据所述class文件变量和所述class文件代码,形成混淆class文件。
4.一种java程序安全处理方法,其特征在于,包括:
获取目标Jar包,对所述目标Jar包进行解析,获取所述目标Jar包对应的混淆class文件;
对所述混淆class文件进行解析,获取目标混淆变量和方法混淆代码,所述目标混淆变量包括类路径、方法签名和方法体密文,所述方法混淆代码包含方法签名和空白方法体;
对所述目标混淆变量的方法体密文进行解密处理,获取所述目标混淆变量对应的方法体明文;
将所述目标混淆变量对应的方法体明文,替换与所述类路径和所述方法签名相对应的方法混淆代码的空白方法体,获取所述方法混淆代码还原的方法源代码;
基于所有所述方法混淆代码还原的方法源代码,获取原始class文件,采用类加载器加载所述原始class文件。
5.如权利要求4所述的java程序安全处理方法,其特征在于,所述对所述目标混淆变量的方法体密文进行解密处理,获取所述目标混淆变量对应的方法体明文,包括:
对所述目标混淆变量进行解析,获取所述目标混淆变量对应的类路径、方法签名和方法体密文;
获取所述目标Jar包对应的目标私钥,采用所述目标私钥对所述方法体密文进行解密,获取所述目标混淆变量对应的方法体明文。
6.如权利要求4所述的java程序安全处理方法,其特征在于,所述将所述目标混淆变量对应的方法体明文,替换与所述类路径和所述方法签名相对应的方法混淆代码的空白方法体,获取所述方法混淆代码还原的方法源代码,包括:
基于所述目标混淆变量对应的类路径和方法签名,确定与所述类路径和所述方法签名相匹配的目标混淆代码,所述目标混淆代码包括方法签名和空白方法体;
将所述目标混淆变量对应的方法体明文,替换所述目标混淆代码对应的空白方法体,获取所述目标混淆代码还原的方法源代码。
7.一种java程序安全处理装置,其特征在于,包括:
源码编译模块,用于获取java源码,对所述java源码进行编译,获取所述java源码对应的原始class文件;
原始文件解析模块,用于对所述原始class文件进行解析,获取所述原始class文件对应的类路径和至少一个方法源代码,所述方法源代码包括方法签名和原始方法体;
加密混淆模块,用于对所述方法源代码进行加密混淆处理,得到方法体密文,基于所述类路径、所述方法签名和所述方法体密文,获取所述方法源代码对应的目标混淆变量;
代码混淆获取模块,用于保留所述方法源代码的方法签名,对所述方法源代码进行清空处理,获取所述方法源代码对应的方法混淆代码;
混淆文件形成模块,用于基于所有所述方法源代码对应的目标混淆变量和方法混淆代码,形成混淆class文件;
目标Jar包封装模块,用于基于混淆class文件,封装形成目标Jar包。
8.一种java程序安全处理装置,其特征在于,包括:
混淆文件获取模块,用于获取目标Jar包,对所述目标Jar包进行解析,获取所述目标Jar包对应的混淆class文件;
混淆文件解析模块,用于对所述混淆class文件进行解析,获取目标混淆变量和方法混淆代码,所述目标混淆变量包括类路径、方法签名和方法体密文,所述方法混淆代码包含方法签名和空白方法体;
混淆变量解密模块,用于对所述目标混淆变量的方法体密文进行解密处理,获取所述目标混淆变量对应的方法体明文;
混淆代码还原模块,用于将所述目标混淆变量对应的方法体明文,替换与所述类路径和所述方法签名相对应的方法混淆代码的空白方法体,获取所述方法混淆代码还原的方法源代码;
原始文件获取模块,用于基于所有所述方法混淆代码还原的方法源代码,获取原始class文件,采用类加载器加载所述原始class文件。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述java程序安全处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述java程序安全处理方法。
CN202110942609.0A 2021-08-17 2021-08-17 java程序安全处理方法、装置、计算机设备及存储介质 Pending CN113656765A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110942609.0A CN113656765A (zh) 2021-08-17 2021-08-17 java程序安全处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110942609.0A CN113656765A (zh) 2021-08-17 2021-08-17 java程序安全处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN113656765A true CN113656765A (zh) 2021-11-16

Family

ID=78479920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110942609.0A Pending CN113656765A (zh) 2021-08-17 2021-08-17 java程序安全处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113656765A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114357387A (zh) * 2021-12-29 2022-04-15 杭州涂鸦信息技术有限公司 java应用程序防篡改的判断方法、编译方法及设备
CN114444028A (zh) * 2022-01-05 2022-05-06 苏州浪潮智能科技有限公司 提升代码安全性的方法、装置、计算机设备和存储介质
CN117313047A (zh) * 2023-11-28 2023-12-29 深圳润世华软件和信息技术服务有限公司 源代码混淆方法、混淆逆转方法、相应装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268444A (zh) * 2014-08-25 2015-01-07 浪潮电子信息产业股份有限公司 一种云OS Java源代码保护方法
KR101521765B1 (ko) * 2015-01-08 2015-05-20 숭실대학교산학협력단 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
CN109241707A (zh) * 2018-08-09 2019-01-18 北京邮电大学 应用程序的混淆方法、装置和服务器
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置
CN110855433A (zh) * 2019-11-07 2020-02-28 深圳市信联征信有限公司 基于加密算法的数据加密方法、装置及计算机设备
CN111552931A (zh) * 2020-04-30 2020-08-18 平安科技(深圳)有限公司 java代码的加壳方法与系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268444A (zh) * 2014-08-25 2015-01-07 浪潮电子信息产业股份有限公司 一种云OS Java源代码保护方法
KR101521765B1 (ko) * 2015-01-08 2015-05-20 숭실대학교산학협력단 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
CN109241707A (zh) * 2018-08-09 2019-01-18 北京邮电大学 应用程序的混淆方法、装置和服务器
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置
CN110855433A (zh) * 2019-11-07 2020-02-28 深圳市信联征信有限公司 基于加密算法的数据加密方法、装置及计算机设备
CN111552931A (zh) * 2020-04-30 2020-08-18 平安科技(深圳)有限公司 java代码的加壳方法与系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨旭辉;周庆国;韩根亮;郑礴;祁昌禹;: "一种基于源代码的Java代码混淆器的设计与实现", 甘肃科学学报, no. 02 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114357387A (zh) * 2021-12-29 2022-04-15 杭州涂鸦信息技术有限公司 java应用程序防篡改的判断方法、编译方法及设备
CN114444028A (zh) * 2022-01-05 2022-05-06 苏州浪潮智能科技有限公司 提升代码安全性的方法、装置、计算机设备和存储介质
CN114444028B (zh) * 2022-01-05 2024-01-12 苏州浪潮智能科技有限公司 提升代码安全性的方法、装置、计算机设备和存储介质
CN117313047A (zh) * 2023-11-28 2023-12-29 深圳润世华软件和信息技术服务有限公司 源代码混淆方法、混淆逆转方法、相应装置及存储介质
CN117313047B (zh) * 2023-11-28 2024-03-15 深圳润世华软件和信息技术服务有限公司 源代码混淆方法、混淆逆转方法、相应装置及存储介质

Similar Documents

Publication Publication Date Title
CN113656765A (zh) java程序安全处理方法、装置、计算机设备及存储介质
KR101490047B1 (ko) 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101328012B1 (ko) 애플리케이션 코드 난독화 장치 및 그 방법
CN107977553B (zh) 移动应用程序的安全加固的方法及装置
CN111177749B (zh) 加密源代码文件处理方法、装置、计算机设备和存储介质
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
CN111475824B (zh) 数据访问方法、装置、设备和存储介质
US20160239671A1 (en) Method and device for protecting an application and method and device for executing a protected application thus protected
CN110826031B (zh) 加密方法、装置、计算机设备及存储介质
US10482221B2 (en) Protecting a computer program against reverse engineering
CN111159658B (zh) 字节码处理方法、系统、装置、计算机设备和存储介质
CN109657479B (zh) 数据防泄漏方法及计算机可读存储介质
CN113010856A (zh) 一种动态非对称加解密的JavaScript代码混淆方法与系统
CN111639306A (zh) 离线软件授权方法、装置、设备及存储介质
CN110941861B (zh) 文件防护方法、装置、计算机设备及介质
CN111666078A (zh) 源码加固方法、装置、计算机设备及存储介质
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN100367144C (zh) 用于加密的应用程序安装的结构
CN107257282B (zh) 一种基于rc4算法的代码全包加密方法
CN109784072B (zh) 一种安全文件管理方法和系统
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
CN111212057B (zh) 资源包传输方法、装置、计算机设备和可读存储介质
CN108170433A (zh) 一种Java代码的混淆方法、恢复方法及其装置
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
CN117093964A (zh) 一种源代码的加密方法、装置、存储介质及电子设备

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