CN103065072B - 提高Java软件破解难度的方法及装置、版权验证方法 - Google Patents

提高Java软件破解难度的方法及装置、版权验证方法 Download PDF

Info

Publication number
CN103065072B
CN103065072B CN201110322930.5A CN201110322930A CN103065072B CN 103065072 B CN103065072 B CN 103065072B CN 201110322930 A CN201110322930 A CN 201110322930A CN 103065072 B CN103065072 B CN 103065072B
Authority
CN
China
Prior art keywords
software
summary info
java
module
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.)
Active
Application number
CN201110322930.5A
Other languages
English (en)
Other versions
CN103065072A (zh
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.)
New Founder Holdings Development Co ltd
Peking University
Founder International Beijing Co Ltd
Original Assignee
Peking University
Founder International Beijing Co Ltd
Peking University Founder Group 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 Peking University, Founder International Beijing Co Ltd, Peking University Founder Group Co Ltd filed Critical Peking University
Priority to CN201110322930.5A priority Critical patent/CN103065072B/zh
Publication of CN103065072A publication Critical patent/CN103065072A/zh
Application granted granted Critical
Publication of CN103065072B publication Critical patent/CN103065072B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种提高Java软件破解难度的方法及装置,和基于该方法及装置的Java软件版权验证方法。在Java软件完成开发在发布之前对编译后的非程序入口类和方法进行代码混淆,提取软件版权保护模块的数字摘要信息得到第一摘要信息,将第一摘要信息作为常量数据硬编码到版权验证类;在版权验证类执行关键操作处再次使用摘要信息提取模块提取运行时的版权保护模块的数字摘要信息,得到第二摘要信息;将第二摘要信息和第一摘要信息比较,若相同说明版权保护模块在发布后没被篡改,软件合法;若不同说明对软件版权保护模块进行过修改,软件可能被破解,用户非法使用软件。采用本发明加大了Java软件的破解难度,提高了版权保护强度。

Description

提高Java软件破解难度的方法及装置、版权验证方法
技术领域
本发明涉及软件版权保护领域,具体涉及一种提高Java软件破解难度的方法及装置,和提高破解难度后的Java软件的版权验证方法。
背景技术
Java语言以其良好的面向对象特性和跨平台特性获得了广泛的应用,但由于Java语言是解释执行的语言,Java编译器编译并发布的字节码程序易于反编译,对Java字节码程序进行反编译获取源代码进行反向工程,或者修改软件保护相关代码对软件进行破解的情况时有发生。
目前很多软件开发商依据计算机唯一的特征码信息如网卡号、硬盘号或者CPU的ID号等一项或多项信息得到计算机指纹信息,将软件许可和硬件绑定。软件开发商也经常将授权许可信息保存在硬件加密狗中,程序在运行时读取加密狗的信息来判断软件是否被授权,这种方式也需要访问硬件信息。
Java语言对硬件访问能力较差,为了获取硬件信息,通常需要使用Java本地调用,如在Windows环境下开发符合JNI(Java本地调用)规范的动态连接库,Java语言调用动态连接库来间接获取硬件信息。
目前,要对软件进行破解,一般都需要对软件进行修改,通过修改代码或开发一段新的代码欺骗版权验证装置的检测,让程序误以为已经被授权。如下面判断软件是否被授权以及获取授权等级的C++函数:
booleanisLicensed();
intgetLicenseLevel();
正常情况下该函数会读取机器特征码信息,在授权文件读取授权信息,然后对比特征码信息和授权信息,isLicensed()函数用来判断软件是否被授权;getLicenseLevel()函数用来获取软件授权等级。通常开发人员会将其编译为动态连接库如License.dll,供Java程序或其他应用程序调用,进行版权验证。
但是对于破解者来说,只需开发两个同名的函数,对第一个函数直接返回true,表示已授权;对第二个函数直接返回100或更高的授权等级。如下:
然后也编译成名为License.dll的动态库替换原来的同名的文件,即可通过版权校验模块的验证,非法使用软件。由于Java字节码容易反编译,也可以采用相同的通过篡改代码或者开发欺骗类的方式进行软件破解。
针对Java字节码易于反编译的问题,目前出现了一些代码混淆工具,混淆以后的代码虽然也可以反编译,但可读性极差,特别是对于代码量大、业务逻辑复杂的类,对反编译代码进行修改再编译成Java字节码理论上是不可能的。
在对Java软件进行破解时,破解者一般从代码量小、逻辑简单的类入手;如果将业务逻辑代码和版权保护代码混在一起,混淆后再发布软件也很难破解。但是为了便于维护以及业务逻辑模块开发人员和版权保护模块开发人员的工作分工,软件开发商会将业务逻辑代码和读取授权信息本身的代码尽量分离,减少耦合。
由于这种业务逻辑代码和软件版权保护代码的分离,对混淆后的软件版权保护代码进行反编译然后篡改还是可能的,另外软件版权保护代码再复杂,破解者只要弄清楚了合法授权程序相应方法的输入输出(而做到这点并不难),根本不用搞清楚内部复杂的软件加密机制,如前所述编写简单的代码,让版权验证方法直接返回合法授权用户相同的值然后重新编译即可将软件破解。
由此可见,现有Java软件保护可以通过篡改软件版权保护模块欺骗软件版权验证装置通过版权认证,具有一定Java或C++语言基础的开发人员很容易实现软件的破解。
发明内容
针对现有Java软件版权保护技术中存在的缺陷,本发明的目的在于提供一种提高Java软件破解难度的方法及装置,和基于该方法及装置提高破解难度后的Java软件的版权验证方法,以解决现有Java软件版权保护技术存在的容易通过篡改软件版权保护模块实现软件破解的问题。
为实现上述目的,本发明采用的技术方案如下:
一种提高Java软件破解难度的方法,包括以下步骤:
步骤1、将软件版权保护模块所涉及的Java类和非Java程序模块设置为摘要信息提取模块的提取对象;
步骤2、编译软件的源代码并将编译结果打包成第一Jar文件,源代码包括业务逻辑代码和软件版权保护代码;
步骤3、设置Jar文件的代码混淆选项,设定Jar文件的程序入口类及程序入口方法;
步骤4、采用所述代码混淆选项对第一Jar文件的非程序入口类及非程序入口方法进行混淆并打包成第二Jar文件;
步骤5、执行第二Jar文件的摘要信息提取模块,提取软件版权保护模块中混淆过的Java类和非Java程序模块的第一摘要信息,并通过第一摘要信息输出装置输出;
步骤6、修改软件源代码,将所述第一摘要信息作为常量信息硬编码到Java软件的版权验证类中;
步骤7、重新编译修改后的软件的源代码并将编译结果打包成第三Jar文件;
步骤8、采用步骤3设置的代码混淆选项对第三Jar文件的非程序入口类及非程序入口方法进行混淆并打包成第四Jar文件,将第四Jar文件作为最终发布的Jar文件。
进一步,如上所述的一种提高Java软件破解难度的方法,步骤3中,所述程序入口包括业务功能模块必须公开的类和方法、第一摘要信息输出装置对应的Java类及其启动方法。
进一步,如上所述的一种提高Java软件破解难度的方法,步骤1中,如果摘要信息提取模块的提取对象是Java类,步骤5中摘要信息提取模块提取到的第一摘要信息是所述Java类混淆后对应的Java类的摘要信息。
再进一步,如上所述的一种提高Java软件破解难度的方法,步骤5中,采用软件系统处理核心业务的Java类中代码量大、业务逻辑复杂的一个或多个Java类作为版权验证类。
一种提高Java软件破解难度的装置,包括:
代码混淆模块:用于对编译后的Java软件的非程序入口类和非程序入口方法进行代码混淆;
软件版权保护模块:用于处理软件版权保护的代码,包括涉及版权保护的Java类和非Java程序模块;
摘要信息提取模块:用于在软件完成开发并在发布前提取软件版权保护模块的第一摘要信息和在运行时提取软件版权保护模块的第二摘要信息;
第一摘要信息输出装置:用于将摘要信息提取模块获取的第一摘要信息输出;
防篡改验证模块:用于将第二摘要信息和第一摘要信息进行比较,确定软件是否合法;
业务功能模块:用于处理软件业务逻辑的代码。
进一步,如上所述的一种提高Java软件破解难度的装置,将第一摘要信息输出装置输出的第一摘要信息硬编码到版权验证类中;将防篡改验证模块嵌入到Java软件的版权验证类中。
进一步,如上所述的一种提高Java软件破解难度的装置,防篡改验证模块进行第一摘要信息和第二摘要信息比较时,若第一摘要信息和第二摘要信息相同则说明软件版权保护模块在发布后没有被篡改,软件合法;若不同说明软件版权保护模块被篡改,软件非法。
再进一步,如上所述的一种提高Java软件破解难度的装置,摘要信息提取模块所提取的第一摘要信息和第二摘要信息是通过代码混淆模块混淆过的Java类和非Java程序模块的摘要信息。
基于上述提高Java软件破解难度的方法及装置的一种提高破解难度的Java软件版权验证的方法,包括以下步骤:
(1)启动应用系统,加载第四Jar文件;
(2)调用摘要信息提取模块,提取软件运行时软件版权保护模块的摘要信息得到第二摘要信息;
(3)将第二摘要信息和硬编码到版权验证类中的第一摘要信息进行比较,如果第二摘要信息与第一摘要信息相同,则说明软件版权保护模块未被篡改,软件合法;如果不同则说明软件版权保护模块被修改,软件非法。
进一步,如上所述的一种软件版权验证的方法,步骤(1)中,通过程序入口中Java类的启动方法启动应用系统。
本发明的效果在于:本发明所述的一种提高Java软件破解难度的方法及装置,和版权验证方法,通过将版权保护模块的数字摘要信息硬编码到版权验证类中,以及将防篡改验证模块嵌入到Java软件的版权验证类中;可以识别软件发布后是否有人篡改软件版权保护模块,提高了Java软件的破解的难度,加大了Java软件的版权保护力度。
附图说明
图1为本发明提高Java软件破解难度的原理示意图;
图2为本发明提高Java软件破解难度装置的结构框图;
图3为本发明提高Java软件破解难度方法的工作流程图;
图4为本发明软件运行时验证软件是否合法的软件版权验证方法的工作流程图;
图5为实施例中提高Java软件破解难度的装置示意图。
具体实施方式
本发明提供了一种提高Java软件破解难度的方法及装置,和基于该方法及装置的Java软件版权验证方法,通过本发明所述的方法及装置可以提高Java软件的破解难度,并识别软件发布后是否有人篡改软件版权保护模块,加大了Java软件的版权保护力度。其原理示意图如图1所示:通过提取混淆后的软件版权保护模块的数字摘要信息得到第一摘要信息,并将第一摘要信息硬编码到版权验证类中作为版权验证类的常量数据。再次对软件版权保护模块进行代码混淆后得到最终的Jar文件作为最终发布的Jar文件。通过这种方法,在版权验证类执行关键操作处就可以通过提取运行时的软件版权保护模块的数字摘要信息得到第二摘要信息,通过将第二摘要信息和版权验证类中的第一摘要信息进行比较,就可以确定软件版权保护模块是否进行过修改,也确定软件的使用是否合法,提高软件的版权保护力度。
下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。
图2示出了本发明一种提高Java软件破解难度装置的结构框图,由图中可以看出,该装置主要包括:
软件版权保护模块11:用于处理软件版权保护的代码,包括涉及版权保护的Java类和非Java程序模块;
代码混淆模块12:用于对编译后的Java软件的非程序入口类及非入口方法进行代码混淆;
业务功能模块13:用于处理软件业务逻辑的代码;
摘要信息提取模块14:用于在软件完成开发并在发布前提取软件版权保护模块的第一摘要信息和在运行时提取软件版权保护模块的第二摘要信息;
第一摘要信息输出装置15:用于将摘要信息提取模块获取的第一摘要信息在显示设备输出;
防篡改验证模块16:用于将第二摘要信息和第一摘要信息进行比较,确定软件是否合法。
为了便于维护以及业务功能模块开发人员和软件版权保护模块开发人员的工作分工,软件开发商会将业务逻辑代码和读取授权信息本身的代码尽量分离,减少耦合。业务逻辑代码保存于业务功能模块,软件版权保护代码保存于软件版权保护模块,其中本发明中的软件版权保护模块中包含代码混淆后的涉及版权保护的Java类和非Java程序模块。通过将摘要信息提取模块14提取的开发阶段的第一摘要信息硬编码到业务功能模块13的版权校验类,将第一摘要信息作为版权验证类的常量信息,然后对源代码再次进行编码和混淆得到最终发布的Jar文件,在软件运行时,摘要信息提取模块14通过摘要信息提取模块提取软件版权保护模块的第二摘要信息,通过防篡改验证模块16(防篡改验证模块16嵌入到Java软件的版权验证类中)将第二摘要信息和第一摘要信息进行比较,若第二摘要信息和第一摘要信息相同则说明软件版权保护模块在发布后没有被篡改,软件合法;若不同说明软件版权保护模块被篡改,软件非法。摘要信息提取模块14所提取的第一摘要信息和第二摘要信息是通过代码混淆模块12混淆过的Java类和非Java程序模块的摘要信息。
图3示出了基于上述提高Java软件破解难度装置的一种提高Java软件破解难度方法的工作流程图,该方法主要包括以下步骤:
步骤21、将软件版权保护模块所涉及的Java类和非Java程序模块设置为摘要信息提取模块的提取对象。
步骤22、编译源代码并打包成第一Jar文件;
源代码包括软件业务功能模块的业务逻辑代码和软件版权保护模块的软件版权保护代码。
步骤23、设置Jar文件的代码混淆选项,设定Jar文件的程序入口类及程序入口方法;
程序入口包括业务功能模块必须公开的类和方法,第一摘要信息输出装置对应的Java类及其启动方法。例如,对于独立运行的Java文件,程序入口为Startup类,根据代码混淆规范,该类以及该类的main方法不能混淆;另外第一摘要信息输出装置对应的Sign类及其main方法,提取第一摘要信息输出装置需要,也不能混淆,在代码混淆装置中将这两个类设置为程序入口类,将这两个类的main方法设置为程序入口方法;未被设定为程序入口类或程序入口方法的类和方法为非程序入口。
步骤24、混淆第一Jar文件得到第二Jar文件;
通过代码混淆模块采用步骤S23所设置的代码混淆选项对第一Jar文件的非程序入口进行代码混淆并打包成第二Jar文件。
步骤25、执行第二Jar文件的摘要信息提取模块得到第一摘要信息;
执行第二Jar文件的摘要信息提取模块所得到的第一摘要信息为软件版权保护模块中混淆过的Java类和非Java程序模块的数字摘要信息,并将第一摘要信息通过第一摘要信息输出装置输出。如果步骤S21中摘要信息提取模块的提取对象是Java类,步骤4中摘要信息提取模块提取到的第一摘要信息是所述Java类混淆后相应的Java类的摘要信息。
步骤26、将第一摘要信息硬编码到版权验证类;
将第一摘要信息硬编码到Java软件的版权验证类中作为版权验证类的常量信息,将防篡改验证模块嵌入到Java软件的版权验证类中。通常软件会有很多的核心业务类,核心业务类是指软件系统处理核心业务的类,脱离核心业务类软件将不能正常运行。从核心业务类中选择一个或多个类作为版权验证类,在本发明中,一般选择核心业务的Java类中代码量大、业务逻辑复杂的一个或多个Java类作为版权验证类,这种Java类混淆后反编译代码难以读懂,对这种类进行修改解除防篡改验证功能然后再次编译运行理论上不能实现。
步骤27、再次编译源代码并打包成第三Jar文件;
步骤S26中修改了软件的源代码,将第一摘要信息作为常量信息硬编码到了版权验证类中,对修改后的源代码再次进行编译并打包成第三Jar文件;
步骤28、混淆第三Jar文件得到第四Jar文件。
采用步骤S23设置的代码混淆选项对第三Jar文件的非程序入口进行混淆并打包成第四Jar文件,并将第四Jar文件作为最终发布的Jar文件。
图4示出了基于上述提高Java软件破解难度装置和方法的一种软件版权验证方法的工作流程图,该验证方法主要包括以下步骤:
步骤31:启动应用系统,加载第四Jar文件;
通过执行程序入口类中Java类的启动方法启动应用系统,并加载第四Jar文件。
步骤32:提取软件版权保护模块的第二摘要信息;
调用摘要信息提取模块,提取软件版权保护模块的摘要信息得到第二摘要信息;软件版权保护模块的摘要信息是指软件版权保护模块的Java类和非Java程序模块的摘要信息。
步骤33:比较第二摘要信息和第一摘要信息,确定软件是否合法。
将第二摘要信息和版权验证类中的第一摘要信息进行比较,如果第二摘要信息与第一摘要信息相同,则说明软件版权保护模块未被篡改,软件合法;如果不同则说明软件版权保护模块被修改,软件非法。
下面通过实施例对本发明进行进一步详细的说明。
实施例
本发明实施例以一个带main函数的能够独立运行的Java软件进行说明。
图5是根据本发明实施例的装置示意图。该应用系统的装置包括:
软件版权保护模块51,此实施例由三个Java类和非Java程序模块组成,Java类包括Global类511、DogMonitor类513和License类515,非Java程序模块为License.dll动态库517。Global类511用于保存系统运行过程需要的全局数据,将授权信息也保存在Global类中;DogMonitor类513通过调用License类定期(如每隔半小时)检查保存在加密狗或硬盘的软件授权信息、并将授权信息传递给Global类;License类515通过JNI调用动态库License.dll中的函数获取软件授权信息。License.dll动态库517用于访问计算机指纹信息,对比计算机指纹信息以及保存在硬盘的授权文件是否一致来决定软件是否被授权,该装置也可以直接读取硬件加密狗判断软件是否被授权。
防篡改验证模块52,用于识别软件发布后是否被篡改,如果没有篡改,则为正版软件;否则为破解软件。
本实施例软件发布前对软件追加版权保护功能的处理过程。包括以下步骤:
步骤1、将软件版权保护模块涉及的Java类Global.class、DogMonitor.class和License.class以及非Java程序模块License.dll设置为摘要信息提取模块的提取对象;
步骤2、将源代码即软件的业务功能模块代码连同软件版权保护模块的代码一起编译并打包成第一Jar文件;
步骤3、设置Jar文件的代码混淆选项,该实施例为独立运行的Java程序,程序入口为Startup类,根据代码混淆规范,该类及该类的main方法不能混淆;另外第一摘要信息输出装置对应的Sign类及该类的main方法,执行第一摘要信息输出装置的程序入口,也不能混淆;在代码混淆装置中将这两个类设置为程序入口类,将这两个类的main方法设置为程序入口方法;
步骤4、采用所述代码混淆选项对第一Jar文件进行代码混淆并打包成第二Jar文件;
步骤5、执行第二Jar文件中的第一摘要信息输出装置,得到步骤1设置的Java类Global.class、DogMonitor.class和License.class混淆后相应类以及非Java程序模块License.dll的数字摘要信息,此处为CRC码,为16进制的整数“0xfea9f3a8L”,并在屏幕打印该信息。
步骤6、修改软件源代码,将所述第一摘要信息“0xfea9f3a8L”作为常量信息硬编码到版权验证类HTKernel中,将防篡改验证模块嵌入到该Java软件的版权验证类中;
privatefinalintFLAG=0xfea9f3a8L;
步骤7、重复步骤2将业务功能模块代码连同软件版权保护模块的代码一起编译并打包成第三Jar文件;
步骤8、采用步骤3所设置的代码混淆选项对第三Jar文件进行代码混淆得到混淆后的第四Jar文件,将第四Jar文件作为最终发布的Jar文件。
本实施例步骤4和步骤8混淆时没有出现类的变化,没有追加新类,没有删除类并且没有修改过类名,因此两次混淆前后类的对应关系是固定的。其区别是步骤8中版权验证类HTKernel混淆前后的类中FLAG值是步骤6中设定的值,即为“0xfea9f3a8L”。
本实施例选择代码量大、处理核心业务逻辑的HTKernel作为版权验证类,在HTKernel类嵌入防篡改验证模块,这种Java类混淆后反编译代码难以读懂,对这个类进行修改解除防篡改验证功能然后再次编译运行理论上不可实现。
本实施例软件未破解正常运行时软件版权验证的过程。包括以下步骤:
步骤1、用户通过加载第四Jar文件,执行Startup类启动应用系统,;
步骤2、应用系统在执行到防篡改验证模块所嵌入的版权验证类HTKernel进行关键业务处理时调用摘要信息提取模块,提取版权保护模块的摘要信息得到第二摘要信息“0xfea9f3a8L”;
步骤3、将第二摘要信息“0xfea9f3a8L”和硬编码进版权验证类HTKernel的第一摘要信息“0xfea9f3a8L”进行比较,发现第二数字摘要信息和第一数字摘要信息完全相同,说明版权保护模块在发布后没有被篡改,软件合法。
本实施例软件版权保护模块被篡改后运行时软件版权验证的过程,只要对Global.class、DogMonitor.class和License.class混淆后对应的类的任何一个做了修改,或者对非Java程序模块License.dll做过修改,均不能通过防篡改验证。包括以下步骤:
步骤1、用户通过加载第四Jar文件,执行Startup类启动应用系统;
步骤2、应用系统在执行到防篡改验证模块所嵌入的版权验证类HTKernel进行关键业务处理时调用摘要信息提取模块,提取版权保护模块的摘要信息得到第二摘要信息“0x9339b91cL”;
步骤3、将第二摘要信息“0x9339b91cL”和硬编码进版权验证类HTKernel的第一摘要信息“0xfea9f3a8L”进行比较,发现第二数字摘要信息和第一数字摘要信息不相同,说明版权保护模块在发布后被篡改,软件非法。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种提高Java软件破解难度的方法,包括以下步骤:
步骤1、将软件版权保护模块所涉及的Java类和非Java程序模块设置为摘要信息提取模块的提取对象;
步骤2、编译软件的源代码并将编译结果打包成第一Jar文件,源代码包括业务逻辑代码和软件版权保护代码;
步骤3、设置Jar文件的代码混淆选项,设定Jar文件的程序入口类及程序入口方法;
步骤4、采用所述代码混淆选项对第一Jar文件的非程序入口类及非程序入口方法进行混淆并打包成第二Jar文件;
步骤5、执行第二Jar文件的摘要信息提取模块,提取软件版权保护模块中混淆过的Java类和非Java程序模块的第一摘要信息,并通过第一摘要信息输出装置输出;
步骤6、修改软件源代码,将所述第一摘要信息作为常量信息硬编码到Java软件的版权验证类中;
步骤7、重新编译修改后的软件的源代码并将编译结果打包成第三Jar文件;
步骤8、采用步骤3设置的代码混淆选项对第三Jar文件的非程序入口类及非程序入口方法进行混淆并打包成第四Jar文件,将第四Jar文件作为最终发布的Jar文件。
2.如权利要求1所述的一种提高Java软件破解难度的方法,其特征在于:步骤3中,所述程序入口包括业务功能模块必须公开的类和方法、第一摘要信息输出装置对应的Java类及其启动方法。
3.如权利要求1所述的一种提高Java软件破解难度的方法,其特征在于:步骤1中,如果摘要信息提取模块的提取对象是Java类,则步骤5中摘要信息提取模块提取到的第一摘要信息是所述Java类混淆后对应的Java类的摘要信息。
4.如权利要求1所述的一种提高Java软件破解难度的方法,其特征在于:步骤6中,采用软件系统处理核心业务的Java类中代码量大、业务逻辑复杂的一个或多个Java类作为版权验证类。
5.一种提高Java软件破解难度的装置,包括:
代码混淆模块:用于对编译后的Java软件的非程序入口类及非程序入口方法进行代码混淆;
软件版权保护模块:用于处理软件版权保护的代码,包括涉及版权保护的Java类和非Java程序模块;
摘要信息提取模块:用于在软件完成开发并在发布前提取软件版权保护模块的第一摘要信息和在运行时提取软件版权保护模块的第二摘要信息;
第一摘要信息输出装置:用于将摘要信息提取模块获取的第一摘要信息在显示设备输出;
防篡改验证模块:用于将第二摘要信息和第一摘要信息进行比较,确定软件是否合法;
业务功能模块:用于处理软件业务逻辑的代码。
6.如权利要求5所述的一种提高Java软件破解难度的装置,其特征在于:将第一摘要信息输出装置输出的第一摘要信息作为常量信息硬编码到版权验证类中;将防篡改验证模块嵌入到Java软件的版权验证类中。
7.如权利要求5或6所述的一种提高Java软件破解难度的装置,其特征在于:防篡改验证模块将第二摘要信息和第一摘要信息进行比较,若第二摘要信息和第一摘要信息相同则说明软件版权保护模块在发布后没有被篡改,软件合法;若不同说明软件版权保护模块被篡改,软件非法。
8.如权利要求5所述的一种提高Java软件破解难度的装置,其特征在于:摘要信息提取模块所提取的第一摘要信息和第二摘要信息是通过代码混淆模块混淆过的Java类和非Java程序模块的摘要信息。
9.一种基于权利要求1至4之一所述方法提高破解难度的Java软件版权验证的方法,包括以下步骤:
(1)启动应用系统,加载第四Jar文件;
(2)调用摘要信息提取模块,提取软件运行时软件版权保护模块的摘要信息得到第二摘要信息;
(3)将第二摘要信息和硬编码到版权验证类中的第一摘要信息进行比较,如果第二摘要信息与第一摘要信息相同,则说明软件版权保护模块未被篡改,软件合法;如果不同则说明软件版权保护模块被篡改,软件非法。
10.如权利要求9所述的一种软件版权验证的方法,其特征在于:步骤(1)中,通过程序入口中Java类的启动方法启动应用系统。
CN201110322930.5A 2011-10-21 2011-10-21 提高Java软件破解难度的方法及装置、版权验证方法 Active CN103065072B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110322930.5A CN103065072B (zh) 2011-10-21 2011-10-21 提高Java软件破解难度的方法及装置、版权验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110322930.5A CN103065072B (zh) 2011-10-21 2011-10-21 提高Java软件破解难度的方法及装置、版权验证方法

Publications (2)

Publication Number Publication Date
CN103065072A CN103065072A (zh) 2013-04-24
CN103065072B true CN103065072B (zh) 2016-08-03

Family

ID=48107700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110322930.5A Active CN103065072B (zh) 2011-10-21 2011-10-21 提高Java软件破解难度的方法及装置、版权验证方法

Country Status (1)

Country Link
CN (1) CN103065072B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573424A (zh) * 2013-10-23 2015-04-29 中国银联股份有限公司 一种应用程序保护系统和方法
WO2015131324A1 (zh) * 2014-03-04 2015-09-11 华为技术有限公司 软件安全性检测方法、装置及设备
CN104318133A (zh) * 2014-10-28 2015-01-28 艾普工华科技(武汉)有限公司 基于图片加密License的处理方法及装置
CN106203002B (zh) * 2015-05-06 2019-09-03 朗新科技股份有限公司 软件产品保护方法
CN105718765A (zh) * 2016-01-26 2016-06-29 国家信息技术安全研究中心 一种利用有限自动机实现代码混淆的方法
CN107770144A (zh) * 2016-08-23 2018-03-06 中国移动通信有限公司研究院 应用监测方法、开发平台、客户端及信息系统
CN106934260B (zh) * 2017-03-14 2020-03-17 北京深思数盾科技股份有限公司 代码保护方法、装置、服务器及存储介质
CN108985012A (zh) * 2018-06-15 2018-12-11 中国建设银行股份有限公司 对java软件进行授权保护的方法及系统
CN110210256B (zh) * 2018-08-07 2023-06-06 腾讯科技(深圳)有限公司 一种应用加固、加固应用启动方法、装置及服务器
CN109583156A (zh) * 2018-12-05 2019-04-05 杭州安恒信息技术股份有限公司 基于认证授权的代码保护方法、装置、系统及设备
CN110609789A (zh) * 2019-08-29 2019-12-24 烽火通信科技股份有限公司 一种用于软件License校验的方法和系统
CN111143787B (zh) * 2019-12-31 2022-02-18 方正国际软件(北京)有限公司 提高Java软件破解难度的方法及装置、验证方法及验证装置
CN112231651A (zh) * 2020-10-26 2021-01-15 山东超越数控电子股份有限公司 一种防止反编译篡改版权授权的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1621992A (zh) * 2004-12-20 2005-06-01 四川大学 一种软件版权保护的方法
US6922782B1 (en) * 2000-06-15 2005-07-26 International Business Machines Corporation Apparatus and method for ensuring data integrity of unauthenticated code
EP2264639A2 (en) * 2009-06-19 2010-12-22 Uniloc Usa, Inc. Securing executable code integrity using auto-derivative key

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922782B1 (en) * 2000-06-15 2005-07-26 International Business Machines Corporation Apparatus and method for ensuring data integrity of unauthenticated code
CN1621992A (zh) * 2004-12-20 2005-06-01 四川大学 一种软件版权保护的方法
EP2264639A2 (en) * 2009-06-19 2010-12-22 Uniloc Usa, Inc. Securing executable code integrity using auto-derivative key

Also Published As

Publication number Publication date
CN103065072A (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
CN103065072B (zh) 提高Java软件破解难度的方法及装置、版权验证方法
Liao et al. Soliaudit: Smart contract vulnerability assessment based on machine learning and fuzz testing
Zhao et al. “TrustDroid™”: Preventing the use of SmartPhones for information leaking in corporate networks through the used of static analysis taint tracking
US8402547B2 (en) Apparatus and method for detecting, prioritizing and fixing security defects and compliance violations in SAP® ABAP™ code
CN101908119B (zh) 一种动态链接库dll文件的处理方法和装置
KR101503785B1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US20050198507A1 (en) Import address table verification
CN106203113A (zh) 安卓应用文件的隐私泄露监控方法
US20180129794A1 (en) Method for Protecting Dex File from Decompilation in Android System
CN108763951B (zh) 一种数据的保护方法及装置
CN102760219A (zh) 一种Android平台软件保护系统、方法及设备
CN105844150A (zh) 一种应用程序的数据保护方法和装置
Freeman et al. Programming. NET Security: Writing Secure Applications Using C# or Visual Basic. NET
US8707050B1 (en) Integrity self-check of secure code within a VM environment using native VM code
CN112231702A (zh) 应用保护方法、装置、设备及介质
CN110245464B (zh) 保护文件的方法和装置
CN108763924B (zh) 一种安卓应用程序中不可信第三方库访问权限控制方法
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
You et al. Deoptfuscator: Defeating Advanced Control-Flow Obfuscation Using Android Runtime (ART)
CN116910712A (zh) 代码保护方法、系统、电子设备及存储介质
CN111783119A (zh) 表单数据安全控制方法、装置、电子设备及存储介质
CN111222122A (zh) 应用权限管理方法、装置及嵌入式设备
CN116383779A (zh) 一种防软件盗版的软件授权许可系统
CN107368713B (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230609

Address after: 100871 No. 5, the Summer Palace Road, Beijing, Haidian District

Patentee after: Peking University

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: Founder International Co.,Ltd. (Beijing)

Address before: 100871 No. 5, the Summer Palace Road, Beijing, Haidian District

Patentee before: Peking University

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: Founder International Co.,Ltd. (Beijing)