【技术实现步骤摘要】
本专利技术涉及软件保护领域,尤其涉及。
技术介绍
Java语言是一种解释型语言。Java源代码经过编译,生成java指令文件,所生成的java指令文件在Java虚拟机(JVM)中解释执行。这种解释执行的运行机制导致Java源代码很容易被反编译。目前这种反编译工具很多,并且反编译的效果也很好,使得任何使用Java软件的用户都可以很容易地反编译和重构产品的源代码,从而使所有基于Java语言的授权认证许可变得毫无意义。因此,保证Java软件程序不被反编译和重构或者提高反编译和重构的难度,是基于Java语言的软件保护领域需要解决的一个重要问题。
技术实现思路
本专利技术的目的是为了克服现有技术的不足,提供了。本专利技术采用的技术方案是:,包括:步骤A: java虚拟机装载class文件,并判断所述class文件是否是合法的文件,如果是,则执行步骤B,否则返回错误信息,结束;步骤B:所述java虚拟机获取所述class文件中java类方法的总个数和java类方法的起始位置,根据所述起始位置找到当前java类方法;步骤C:所述java虚拟机解析当前java类方法对应的java指令,并判断是否解析成功,如果是,则执行步骤D,否则返回错误信息,结束;步骤D: 所述java虚拟机判断所述当前java类方法对应的java指令是否符合预设可移植指令条件,如果是,则将所述当前java类方法对应的java指令移植并保存到预设缓冲区中,执行步骤E,否则执行步骤G ;步骤E:所述java虚拟机获取当前java类方法的最大java虚拟机栈深度和最大局部变量个数;步骤F:所述java虚拟机根 ...
【技术保护点】
一种保护java程序的方法,其特征在于,包括:步骤A:java虚拟机装载class文件,并判断所述class文件是否是合法的文件,如果是,则执行步骤B,否则返回错误信息,结束;步骤B:所述java虚拟机获取所述class文件中java类方法的总个数和java类方法的起始位置,根据所述起始位置找到当前java类方法;步骤C:所述java虚拟机解析当前java类方法对应的java指令,并判断是否解析成功,如果是,则执行步骤D,否则返回错误信息,结束;步骤D:所述java虚拟机判断所述当前java类方法对应的java指令是否符合预设可移植指令条件,如果是,则将所述当前java类方法对应的java指令移植并保存到预设缓冲区中,执行步骤E,否则执行步骤G;步骤E:所述java虚拟机获取当前java类方法的最大java虚拟机栈深度和最大局部变量个数;步骤F:所述java虚拟机根据所述最大java虚拟机栈深度和最大局部变量个数,用获取栈和局部变量的java类方法、执行加密锁内虚拟机的java类方法与修改栈和局部变量的java类方法填充所述class文件中被移植的java指令的位置,执行步骤G;步骤G ...
【技术特征摘要】
1.一种保护java程序的方法,其特征在于,包括: 步骤A: java虚拟机装载class文件,并判断所述class文件是否是合法的文件,如果是,则执行步骤B,否则返回错误信息,结束; 步骤B:所述java虚拟机获取所述class文件中java类方法的总个数和java类方法的起始位置,根据所述起始位置找到当前java类方法; 步骤C:所述java虚拟机解析当前java类方法对应的java指令,并判断是否解析成功,如果是,则执行步骤D,否则返回错误信息,结束; 步骤D:所述java虚拟机判断所述当前java类方法对应的java指令是否符合预设可移植指令条件,如果是,则将所述当前java类方法对应的java指令移植并保存到预设缓冲区中,执行步骤E,否则执行步骤G ; 步骤E:所述java虚拟机获取当前java类方法的最大java虚拟机栈深度和最大局部变量个数; 步骤F:所述java虚拟机根据所述最大java虚拟机栈深度和最大局部变量个数,用获取栈和局部变量的java类方法、执行加密锁内虚拟机的java类方法与修改栈和局部变量的java类方法填充所述class文件中被移植的java指令的位置,执行步骤G ; 步骤G:所述java虚拟机判断已解析的java类方法的个数是否达到所述class文件中java类方法的总个数,如果是,则将所述预设缓冲区中的当前java类方法对应的java指令移植到加密锁内,结束,否则继续获取下一 java类方法作为当前java类方法,返回执行步骤C。2.根据权利要求1所述的方法,其特征在于,所述步骤A中,所述判断所述class文件是否是合法的文件,具体为:获取并判断class文件的文件头是否为预设字符串,如果是,则表示所述class文件是合法的文件,否则表示所述class文件是不合法的文件。3.根据权利要求1所述的方法,其特征在于,所述步骤C中,所述解析当前java类方法对应的java指令,具体为: 步骤C-1:所述java虚拟机获取所述class文件中常量池的个数和常量池的起始位置; 步骤C-2:所述java虚拟机根据当前java类方法的第一成员变量和第二成员变量,从所述常量池中获取java类方法名称和java类方法描述符,并判断是否获取成功,如果是,则执行步骤C-3,否则返回错误信息,结束; 步骤C-3:所述java虚拟机根据当前java类方法的第三成员变量和第四成员变量,获取当前java类方法的附加属性,并判断是否获取成功,如果是,则执行步骤D,否则返回错误信息,结束。4.根据权利要求3所述的方法,其特征在于,所述当前java类方法的第一成员变量是对所述常量池中的java类方法名称的索引;所述当前java类方法的第二成员变量是对所述常量池中java类方法描述符的索引;所述当前java类方法的第三成员变量为当前java类方法的附加属性的个数;所述当前java类方法的第四成员变量为当前java类方法的附加属性的起始位置。5.根据权利要求3或4所述的方法,其特征在于,所述附加属性包括code属性,code属性中包括当前java类方法的 java指令和当前java类方法的java指令的长度。6.根据权利要求3所述的方法,其特征在于,所述步骤C与所述步骤D之间包括: 步骤A-1:所述java虚拟机显示class文件的当前java类方法和当前java类方法对应的java指令; 步骤B-1:所述java虚拟机判断已解析的java类方法的个数是否超过所述class文件中java类方法的总个数,如果是,则执行步骤C-1,否则将下一 java类方法作为当前java类方法,返回执行步骤C ; 步骤C-1:所述java虚拟机接收用户对显示的java类方法和java类方法对应的java指令的选择,根据所述附加属性,获取用户选择的java类方法对应的java指令的起始位置,根据所述起始位置,找到当前java类方法对应的jav...
【专利技术属性】
技术研发人员:陆舟,于华章,
申请(专利权)人:飞天诚信科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。