CN101814124A - 一种基于Java的软件安全性加强的方法 - Google Patents
一种基于Java的软件安全性加强的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000002708 enhancing effect Effects 0.000 title abstract 2
- 238000005728 strengthening Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 2
- 238000004806 packaging method and process Methods 0.000 abstract 1
- 238000012856 packing Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000008140 language development Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种基于Java的软件安全性加强的方法是根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正确的代码,保证了源代码安全。程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的loadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。
Description
技术领域
本发明涉及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执行。
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)
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)
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服务的电子公文安全传输方法 |
-
2010
- 2010-04-20 CN CN201010150565A patent/CN101814124A/zh active Pending
Patent Citations (2)
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)
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 |