CN101814124A - 一种基于Java的软件安全性加强的方法 - Google Patents

一种基于Java的软件安全性加强的方法 Download PDF

Info

Publication number
CN101814124A
CN101814124A CN201010150565A CN201010150565A CN101814124A CN 101814124 A CN101814124 A CN 101814124A CN 201010150565 A CN201010150565 A CN 201010150565A CN 201010150565 A CN201010150565 A CN 201010150565A CN 101814124 A CN101814124 A CN 101814124A
Authority
CN
China
Prior art keywords
code
java
file
jvm
class
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
CN201010150565A
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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Langchao Electronic Information Industry 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 Langchao Electronic Information Industry Co Ltd filed Critical Langchao Electronic Information Industry Co Ltd
Priority to CN201010150565A priority Critical patent/CN101814124A/zh
Publication of CN101814124A publication Critical patent/CN101814124A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种基于Java的软件安全性加强的方法是根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正确的代码,保证了源代码安全。程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的loadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。

Description

一种基于Java的软件安全性加强的方法
技术领域
本发明涉及java进行软件开发领域,具体涉及一种通用的、灵活的、高可扩展的模块化的代码加密方法。
背景技术
当前,世界大多数的软件开发公司都在使用java进行软件开发,据51Cto网络统计,世界前20名的软件公司,大都使用了java进行软件开发,java语言开发范围涉及广。利用java语言开发的系统涉及范围更是囊括了财务软件,ERP软件,物流软件等信息管理系统,这些都是各软件开发公司花费大量的人力、物力、财力开发的软件,甚至是公司的唯一盈利模式,但是当java开发的软件经过传统的部署模式进行部署以后,根据java的开源性质,java软件的运行机制已经被很多顶尖高手熟悉,他们开发出了可以反编译java生成的class文件,使得软件对于有java知识的人暴露无遗,也使得软件公司的心血很快被模仿,造成软件公司开发的产品迅速在市场被各公司模仿。
为了解决java开发的软件被反编译,我们提出一种java新的部署模式,即部署的java软件的class文件利用我们的方法加密,进行代码加密,从而达到防止被反编译。
发明内容
本发明的目的是提供一种基于Java的软件安全性加强的方法。
本发明的目的是按以下方式实现的,使用代码保护方法对java生成的class代码进行加密,对Class文件进行加密处理,使得处理后的代码与处理前代码完成相同的功能,但是加密的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的加密后文件,因此反编译人员很难得出程序的真正语义,这样即保证java开发软件的跨平台特性,又防止开发的软件被别人反编译后轻易获取,达到了保护软件的目的,该方法包括对class文件的加密过程和class文件在被jvm加载时执行前的解密过程,步骤如下:
1)在程序代码完成后,对生产的class文件进行加密,并保存加密算法,以在jvm执行时得到解密方法;
2)Jvm执行时通过load Class进行class文件加载,在加载过程中,首先得到文件的加密算法,根据对应的解密算法对文件进行解密,然后转交jvm执行。
根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正确的代码,保证了源代码安全。
程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的loadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。
本发明的Java生成的class文件的加密方法使用后的优异效果是,我们可以利用当前比较流行的对称加、解密算法进行。对生成的class代码进行加密,在执行时进行解密,从而达到保护代码的目的。
附图说明
附图1为传统的java执行过程示意图;
附图2为经过保护的java执行过程示意图;
附图3为传统的class文件被反编译示意图;
附图4为加密后的class文件被编译过程示意图。
具体实施方式
参照说明书附图对本发明的作以下详细地说明。
参考附图1,传统的java文件执行过程
传统的部署,我们生成的class文件打成jar包,进行程序发布,当安装了java虚拟机以后,jvm根据程序的配置进行jar的加载,读取到其中的class文件进行执行。此处class文件可被反编译
参考附图2,保护的java执行过程
根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正确的代码,保证了源代码安全。
程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的loadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。Java运行时装入字节码的机制隐含地意味着可以对字节码进行修改。JVM每次装入类文件时都需要一个称为ClassLoader的对象,这个对象负责把新的类装入正在运行的JVM。JVM给ClassLoader一个包含了待装入类(比如java.lang.Object)名字的字符串,然后由ClassLoader负责找到类文件,装入原始数据,并把它转换成一个Class对象。
我们可以通过定制ClassLoader,在类文件执行之前修改它。在这里,它的用途是在类文件装入之时进行解密,因此可以看成是一种即时解密器。由于解密后的字节码文件永远不会保存到文件系统,所以窃密者很难得到解密后的代码。
Java在一定程度上简化了定制ClassLoader的构建。在Java中,loadClass的缺省实现负责处理所有必需的步骤,但为了顾及各种定制的类装入过程,它还调用一个新的findClass方法。这为我们编写定制的ClassLoader提供了一条捷径,减少了麻烦:只需覆盖findClass,而不是覆盖loadClass。这种方法避免了重复所有装入器必需执行的公共步骤,因为这一切由loadClass负责。
不过,本发明的定制ClassLoader并不使用这种方法。原因很简单。如果由默认的ClassLoader先寻找经过加密的类文件,它可以找到;但由于类文件已经加密,所以它不会认可这个类文件,装入过程将失败。因此,我们必须自己实现loadClass,加入了class文件的加、解密机制,即保证了程序运行安全,又保证了代码安全。

Claims (1)

1.一种基于Java的软件安全性加强的方法,其特征在于,使用代码保护方法对java生成的class代码进行加密,对Class文件进行加密处理,使得处理后的代码与处理前代码完成相同的功能,但是加密的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的加密后文件,因此反编译人员很难得出程序的真正语义,这样即保证java开发软件的跨平台特性,又防止开发的软件被别人反编译后轻易获取,达到了保护软件的目的,该方法包括对class文件的加密过程和class文件在被jvm加载时执行前的解密过程,步骤如下:
1)在程序代码完成后,对生产的class文件进行加密,并保存加密算法,以在jvm执行时得到解密方法;
2)Jvm执行时通过load Class进行class文件加载,在加载过程中,首先得到文件的加密算法,根据对应的解密算法对文件进行解密,然后转交jvm执行。
CN201010150565A 2010-04-20 2010-04-20 一种基于Java的软件安全性加强的方法 Pending CN101814124A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010150565A CN101814124A (zh) 2010-04-20 2010-04-20 一种基于Java的软件安全性加强的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010150565A CN101814124A (zh) 2010-04-20 2010-04-20 一种基于Java的软件安全性加强的方法

Publications (1)

Publication Number Publication Date
CN101814124A true CN101814124A (zh) 2010-08-25

Family

ID=42621376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010150565A Pending CN101814124A (zh) 2010-04-20 2010-04-20 一种基于Java的软件安全性加强的方法

Country Status (1)

Country Link
CN (1) CN101814124A (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944042A (zh) * 2010-09-01 2011-01-12 深圳市拜特科技股份有限公司 一种Java程序的运行方法及电子终端
CN102043932A (zh) * 2010-12-31 2011-05-04 中国航空工业集团公司第六三一研究所 一种防止Java程序被反编译的方法
CN102346834A (zh) * 2011-11-25 2012-02-08 武汉钢铁(集团)公司 Java应用软件加密保护的方法
CN102360412A (zh) * 2011-09-26 2012-02-22 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
CN102682243A (zh) * 2011-03-11 2012-09-19 北京市国路安信息技术有限公司 一种构建可信java虚拟机平台的方法
CN103093136A (zh) * 2012-12-27 2013-05-08 飞天诚信科技股份有限公司 一种java应用访问智能密钥装置的方法
CN103745141A (zh) * 2013-12-02 2014-04-23 上海斐讯数据通信技术有限公司 智能终端android系统中防止应用程序反编译的方法
CN103971034A (zh) * 2014-04-24 2014-08-06 福建联迪商用设备有限公司 一种保护Java软件的方法及装置
CN104657635A (zh) * 2013-11-20 2015-05-27 方正信息产业控股有限公司 一种应用处理方法、装置和服务器
CN105022936A (zh) * 2014-04-30 2015-11-04 北京畅游天下网络技术有限公司 一种类class文件加密解密方法和装置
CN105893793A (zh) * 2016-04-05 2016-08-24 上海携程商务有限公司 app应用的防逆向破解的加密方法及加密系统
CN103856481B (zh) * 2012-11-30 2017-09-22 辉达公司 使用在线认证和经加密代码执行的代码保护方法和系统
CN108664773A (zh) * 2018-04-26 2018-10-16 北京三快在线科技有限公司 Java源代码的保护方法及装置
CN110210188A (zh) * 2019-06-04 2019-09-06 武汉神算云信息科技有限责任公司 Spring框架下代码加密方法、装置、设备及存储介质
CN110764782A (zh) * 2019-10-31 2020-02-07 贵阳动视云科技有限公司 软件的保护方法及装置
CN111159661A (zh) * 2018-11-08 2020-05-15 迈普通信技术股份有限公司 一种防止反编译方法、装置、电子设备及存储介质
CN112966227A (zh) * 2021-02-04 2021-06-15 南方电网深圳数字电网研究院有限公司 代码加密解密方法和装置、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101305333A (zh) * 2003-11-26 2008-11-12 国际商业机器公司 防篡改可信任虚拟机
CN101321057A (zh) * 2008-07-22 2008-12-10 北京航空航天大学 基于Web服务的电子公文安全传输方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101305333A (zh) * 2003-11-26 2008-11-12 国际商业机器公司 防篡改可信任虚拟机
CN101321057A (zh) * 2008-07-22 2008-12-10 北京航空航天大学 基于Web服务的电子公文安全传输方法

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944042A (zh) * 2010-09-01 2011-01-12 深圳市拜特科技股份有限公司 一种Java程序的运行方法及电子终端
CN102043932B (zh) * 2010-12-31 2012-07-18 中国航空工业集团公司第六三一研究所 一种防止Java程序被反编译的方法
CN102043932A (zh) * 2010-12-31 2011-05-04 中国航空工业集团公司第六三一研究所 一种防止Java程序被反编译的方法
CN102682243A (zh) * 2011-03-11 2012-09-19 北京市国路安信息技术有限公司 一种构建可信java虚拟机平台的方法
US9443064B2 (en) 2011-09-26 2016-09-13 Feitian Technologies Co., Ltd. Protecting method and system of java source code
WO2013044709A1 (zh) * 2011-09-26 2013-04-04 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
CN102360412B (zh) * 2011-09-26 2014-07-02 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
CN102360412A (zh) * 2011-09-26 2012-02-22 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
CN102346834A (zh) * 2011-11-25 2012-02-08 武汉钢铁(集团)公司 Java应用软件加密保护的方法
CN103856481B (zh) * 2012-11-30 2017-09-22 辉达公司 使用在线认证和经加密代码执行的代码保护方法和系统
CN103093136A (zh) * 2012-12-27 2013-05-08 飞天诚信科技股份有限公司 一种java应用访问智能密钥装置的方法
CN103093136B (zh) * 2012-12-27 2015-05-27 飞天诚信科技股份有限公司 一种java应用访问智能密钥装置的方法
CN104657635A (zh) * 2013-11-20 2015-05-27 方正信息产业控股有限公司 一种应用处理方法、装置和服务器
CN103745141A (zh) * 2013-12-02 2014-04-23 上海斐讯数据通信技术有限公司 智能终端android系统中防止应用程序反编译的方法
CN103971034A (zh) * 2014-04-24 2014-08-06 福建联迪商用设备有限公司 一种保护Java软件的方法及装置
CN105022936A (zh) * 2014-04-30 2015-11-04 北京畅游天下网络技术有限公司 一种类class文件加密解密方法和装置
CN105893793A (zh) * 2016-04-05 2016-08-24 上海携程商务有限公司 app应用的防逆向破解的加密方法及加密系统
CN108664773A (zh) * 2018-04-26 2018-10-16 北京三快在线科技有限公司 Java源代码的保护方法及装置
CN111159661A (zh) * 2018-11-08 2020-05-15 迈普通信技术股份有限公司 一种防止反编译方法、装置、电子设备及存储介质
CN110210188A (zh) * 2019-06-04 2019-09-06 武汉神算云信息科技有限责任公司 Spring框架下代码加密方法、装置、设备及存储介质
CN110764782A (zh) * 2019-10-31 2020-02-07 贵阳动视云科技有限公司 软件的保护方法及装置
CN110764782B (zh) * 2019-10-31 2021-01-26 贵阳动视云科技有限公司 软件的保护方法及装置
CN112966227A (zh) * 2021-02-04 2021-06-15 南方电网深圳数字电网研究院有限公司 代码加密解密方法和装置、存储介质

Similar Documents

Publication Publication Date Title
CN101814124A (zh) 一种基于Java的软件安全性加强的方法
CN107977553B (zh) 移动应用程序的安全加固的方法及装置
US9443064B2 (en) Protecting method and system of java source code
CN102087605B (zh) 一种基于android平台应用安装控制方法及系统
KR101391982B1 (ko) 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법
CN102890758B (zh) 一种保护可执行文件的方法及系统
US20160203087A1 (en) Method for providing security for common intermediate language-based program
US20120192283A1 (en) Interlocked Binary Protection Using Whitebox Cryptography
EP2105893A1 (en) Method for protecting a CAP file for an IC Card
CN104268444A (zh) 一种云OS Java源代码保护方法
US7970133B2 (en) System and method for secure and flexible key schedule generation
CN104298932A (zh) 一种so文件的调用方法及装置
CN106650330A (zh) 一种基于Dex加载器的Android应用软件加固保护方法
US20200356642A1 (en) Enabling an encrypted software module in a container file
CN111191195A (zh) 一种用于保护apk的方法和装置
CN104951674A (zh) 用于应用程序的信息隐藏方法
CN108898007A (zh) 一种基于JavaAgent和dll增强Java分发软件的安全方法
CN112966227A (zh) 代码加密解密方法和装置、存储介质
CN104200137A (zh) 一种保护java程序自身安全的方法
CN105574441A (zh) 一种嵌入式固件保护的方法和装置
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
CN104657635A (zh) 一种应用处理方法、装置和服务器
KR20140139392A (ko) 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
CN109992974A (zh) 虚拟机字节码文件的保护方法、设备及可读存储介质
CN105426702A (zh) 基于安卓操作系统的应用程序加密解密方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20100825