一种基于JavaAgent和dll增强Java分发软件的安全方法技术

技术编号:19593706 阅读:26 留言:0更新日期:2018-11-28 04:59
一种基于JavaAgent和dll增强Java分发软件的安全方法,步骤如下:步骤1:用c语言编写的加密程序,且只对需要发布的jar包在线下c语言加密程序进行加密操作;将需要加密的jar包路径传递给加密程序;步骤2:加密的jar包在应用的启动脚本中添加JavaAgent解密后由Classloader加载后运行。JavaAgent相关命令用来在jvm加载前做解密工作;JavaAgent是Java加载class文件之前对字节码进行拦截修改的程序,再经dll动态链接库连接到作为共享函数库中为解密用jar包地址可执行文件。

【技术实现步骤摘要】
一种基于JavaAgent和dll增强Java分发软件的安全方法
本专利技术属于软件安全领域,具体涉及一种基于JavaAgent(Java提供的一种可以在加载class文件之前对字节码进行拦截修改的机制)和dll增强Java分发软件安全的方法和工具。
技术介绍
Java借助字节码技术能轻松的实现跨平台,故而得到了广泛的使用。但是其主要应用领域在企业级开发,对桌面应用领域则一直没有太大的建树。其中一个原因就是其字节码技术易于被破解,使得开发出来的代码很容易被反编译出来,从而被盗版,使应用开发者的知识产权遭到侵犯。现有专利CN101814124A,也是解决上述问题的方法,CN101814124A是基于Java的软件安全性加强的方法,使用代码保护方法对java生成的class代码进行加密,对Class文件进行加密处理,使得处理后的代码与处理前代码完成相同的功能,但是加密的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的加密后文件,因此反编译人员很难得出程序的真正语义,这样即保证java开发软件的跨平台特性,又防止开发的软件被别人反编译后轻易获取,达到了保护软件的目的,该方法包括对class文件的加密过程和class文件在被jvm加载时执行前的解密过程:1)在程序代码完成后,对生产的class文件进行加密,并保存加密算法,以在jvm执行时得到解密方法;2)Jvm执行时通过loadClass进行class文件加载,在加载过程中,首先得到文件的加密算法,根据对应的解密算法对文件进行解密,然后转交jvm执行。但是该专利是通过重载ClassLoader的loadclass方法来解决,有下列不足:要求门槛较高,对于JVM加载机制要非常有研究。对JVM自身侵入性较高,要改动JVM原有加载机制。可定制性不强,统一的loadclass加载没法做到javaagent中可分文件解密分不同方式解密的功能。
技术实现思路
本专利技术的目的是,通过JavaAgent(Java提供的一种可以在加载class文件之前对字节码进行拦截修改的机制)和dll(动态链接库,一个作为共享函数库的可执行文件)在对应用无侵入的情况下对应用进行加解密操作;提高应用的安全性。本专利技术的技术方案是:一种基于JavaAgent和dll增强Java分发软件安全的方法,具体包括:一种基于JavaAgent和dll增强Java分发软件安全的方法,步骤如下:步骤1:用c语言编写的加密程序,且只对需要发布的jar包在线下c语言加密程序进行加密操作;将需要加密的jar包路径传递给加密程序;步骤2:加密的jar包在应用的启动脚本中添加JavaAgent解密后由Classloader加载后运行。步骤2中,JavaAgent相关命令,用来在jvm加载前做解密工作(具体是:JavaAgent是Java提供的一种可以在加载class文件之前对字节码进行拦截修改的程序,再经dll动态链接库连接到作为共享函数库中为解密用jar包地址可执行文件;解密后由Classloader加载后运行。JAR(JavaArchive,Java归档文件)是与平台无关的文件格式,jar包通常是开发时要引用通用类,打成包便于存放管理。本专利技术与其他技术方案相比较,具有有益效果:(1)本专利技术对待应用自身无任何侵入性,不影响应用的任何流程,包括开发、测试、部署。(2)本专利技术对JVM自身加载机制无任何侵入性,通过JavaAgent在JVM加载前,完成所有解密逻辑。(3)本专利技术通过c语言进行实际的加解密操作,提高破解难度。附图说明图1为本专利技术流程示意图。具体实施方式为使本专利技术的技术方案、技术目的及技术效果更清晰明白,以下结合具体实施例,对本专利技术进一步详细说明。1.按正常流程开发完应用,并打包为待发布jar包或war包。执行c语言加密程序,传递打包完成的jar包或war包路径。加密程序会对对应的jar包/war包进行加密。生成加密后的jar包/war包。加密后的jar包/war包不能直接通过java命令或容器直接运行,且无法反编译。用c语言编写的加密程序,对需要发布的jar包进行加密操作;2.在应用的启动脚本中添加JavaAgent相关命令,用来在jvm加载前做解密工作,修改应用启动脚本参数,添加如下命令-agentpath:${path-to-dll}-javaagent:${path-to-wrap-runner.jar},其中path-to-dll为解密用动态链接库地址,path-to-wrap-runner.jar为解密用jar包地址。对于war包,在容器中添加对应指令,以jetty为例,在start.ini中添加如下命令--exec-agentpath:${path-to-dll}-javaagent:${path-to-wrap-runner.jar}4.JavaAgent解密后,将解密后的正常class文件交由Classloader加载后运行,即执行启动脚本或启动容器。虽然本专利技术已以较佳实施例揭露如上,然其并非用以限定本专利技术。本专利技术所属
中具有通常知识者,在不脱离本专利技术的精神和范围内,当可作各种的更动与润饰。因此,本专利技术的保护范围当视权利要求书所界定者为准。本文档来自技高网
...

【技术保护点】
1.一种基于JavaAgent和dll增强Java分发软件的安全方法,其特征是,步骤如下:步骤1:用c语言编写的加密程序,且只对需要发布的jar包在线下c语言加密程序进行加密操作;将需要加密的jar包路径传递给加密程序;步骤2:加密的jar包在应用的启动脚本中添加JavaAgent解密后由Classloader加载后运行。

【技术特征摘要】
1.一种基于JavaAgent和dll增强Java分发软件的安全方法,其特征是,步骤如下:步骤1:用c语言编写的加密程序,且只对需要发布的jar包在线下c语言加密程序进行加密操作;将需要加密的jar包路径传递给加密程序;步骤2:加密的jar包在应用的启动脚本中添加JavaAgent解密后由Classloader加载后运行。2.根据权利要求1所述的Java分发软件的安全方法,其特征是,步骤2中,JavaAgent相关命令用来在jvm加载前做解密工作;JavaAgent是...

【专利技术属性】
技术研发人员:张勇何学勇
申请(专利权)人:焦点科技股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1