Java项目的Class文件加密探讨

来源 :成长·读写月刊 | 被引量 : 0次 | 上传用户:wsw62084751
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】Java 编译的class文件很容易被反编译,不利于保护一些核心的代码。文章分析了class文件的几种加密方案的优缺点,并提出了安全可靠的class文件加密方案。
  【关键词】Java;Classloader;JavaAgent
  Java 的class 类文件是Java源代码文件经过编译后生成的字节码文件,类文件有固定的结构,比如前四个字节固定为0xCAFEBABE,接下来四个字节是副版本号和主版本号等等。源代码中的变量、常量等一切全在结构中,了解的类文件的固定结构,就能轻易地根据class文件生成java源文件。这对项目某个核心的模块来说,会造成关键技术的泄漏。尤其是涉及到版权的license管理,如何对class类进行加密,是公司必须要考虑的问题。针对这个问题,有各种解决方案,有class混淆方案,也有class加密方案。class加密也有不同的加密技巧和策略。
  class混淆器就是在不影响代码执行的条件下,对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能。混淆方法主要有外观混淆、控制混淆、预防混淆、数据混淆。混淆后的代码很难被反编译,但不是不能被反编译,反编译后的程序虽然可读性较差,但整理后程序的程序代码还是可用的,程序逻辑可以修改。如果重写这个类和方法,就可以直接跳过某个校验过程以达到某种目的,比如跳过license的验证或者直接返回许可信息。由于java的ClassLoader可以直接加载这个类,所以修改某个类并直接运行不成问题。安全的方案就是把class直接加密,但加密后的class并不能被ClassLoader直接识别并运行。
  由于class文件有固定的结构,ClassLoader将class文件加载到JVM虚拟机,程序就可以运行了。加密后class文件,原来的ClassLoader无法正常解析,要继承并重写自己的ClassLoader类和defineClass()方法,defineClass()能将class二进制内容转换成class对象,类的解密工作也可以在这里进行,也就是在把类字节转交给JVM运行之前,解密class文件为正常的字节码文件。当然,这种解密的方法直接暴露在自定义的ClassLoader类中,可以反编译ClassLoader类来得到解密方法并得到正常的class字节码,把这些字节码写入到文件,再反编译就能得到Java源文件,所以这种方法并不安全。
  对于WEB项目,一般来说WEB容器有自己的加载器,比如TOMCAT的catalina.jar,可以修改两个文件,org.apache.catalina.loader.WebappClassLoaderBase.class文件中的findResourceInternal方法和 org.apache.catalina.startup.ContextConfig.class文件中的processAnnotationsJar方法、processAnnotationsJndi方法、processAnnotationsFile方法,在调用processAnnotationsStream方法之前解密类文件,把解密后的字节流传给processAnnotationsStream。这种加密方法比较灵活,可以根据情况只加密解密部分核心的类文件以提高运行效率。当然,这种方法要和具体的TOMCAT版本相结合,如果要使用其它的WEB容器或者不同版本的TOMCAT,都需要修改相应版本的catalina.jar文件,不方便管理。从安全性的角度来看,此种方法和自定义ClassLoader差不多,如果catalina.jar文件和WebappClassLoaderBase.class、ContextConfig.class得不到有效的保护,可以通过修改这两个文件在得到解密后的class文件后再反编译得到源文件。
  前面两种方法是用Java来实现解密class文件,本身解密的class能被反编译,这其实是不安全的,当然,你可以嵌套几次加密和解密的过程,但这样操作太过复杂。使用JVMTI编程接口,用C/C++来实现解密过程是个不错的选择。JVMTI是JVM Tool Interface,它提供了本地编程接口,利用JDK中JVM的某些类似钩子机制和事件监听机制,监听加载class事件。通过启动java程序时加参数-agentlib来指定lib库,例如:java -agentlib:libClassLoader,其中libClassLoader是用C/C++编写,可以是Windows下的DLL库,也可以是Linux下的so文件,在libClassLoader中实现对加密class的解密工作。由于C/C++编译后的库文件被反编译基本上是汇编语言,要理解其中的解密逻辑几乎无望。此外,lib还能被加壳,进一步增加了反编译的难度。程序只要在JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved)方法中设置ClassFileLoadHook回调方法,并实现自己的ClassFileLoadHook方法即可。实践证明,这是一个行之有效的运行class解密方案。
  此外,加密方法的选择直接影响了java项目的运行效率。Class加密可以选择对称加密,也可以选择非对称的加密算法,如RSA,class文件可以完整加密,也可以部分加密。安全其见,建议选择RSA等非对称算法,避免密钥的泄露。由于非对称加密算法的效率较低,工程中可以结合实际只对类的头部结构信息加密,可以大大提高运行效率。
  作者简介:王文学(1976-),男,河南人,讲师,研究方向:网络安全。
  参考文献:
  [1]《Java虚拟機规范》 Tim Lindholm 机械工业出版社
其他文献
我国正处于高速发展时期,这个阶段对气象条件的掌握有着非常高的需求,气象服务工作的及时性和准确性显得格外重要。公共气象服务目前仍采用基本的政府式服务模式,其主要过程是气象部门向社会、政府等提供气象信息服务的过程,其实质是公益性的服务,不以盈利为目的。当前公共气象服务的整体水平在面对不断发展的社会现状时,已感“力不从心”。为了进一步缓解该现状,应当针对当前公共气象服务模式中存在的问题进行研究分析。  
期刊
生物多样性是人类赖以生存的重要物质基础,中国在生物多样性研究领域做了大量的工作,发表了众多有价值的学术论文。通过文献计量方法,对2009—2018年中国生物多样性研究领域WOS(Web of Science)和CNKI(中国知网)数据库收录论文的数量及被引情况、载文期刊分布等进行统计;并借助CiteSpace文献可视化软件,分析论文的作者合作、合作机构、国家(地区)合作和研究热点等。结果表明:20
商合杭高铁芜湖长江公铁大桥主桥是主跨为588 m的非对称矮塔斜拉桥。门型高低塔高分别为155.0 m、130.5 m,桥塔采用液压爬模施工,上横梁与两侧对应塔柱同步采用不落地支架分3层施工,研究采用门型内倾塔柱合龙前塔梁索同步施工以加快施工进度。1234.6 m长联钢梁仅在主跨跨中设合龙口,除2个主塔墩和辅助墩墩顶节段采用浮吊辅助架设外,其余均采用800 t变幅式架梁吊机“分层变幅”悬臂架设,跨中合龙段按先铁路、再公路、后斜杆和中竖杆的顺序合龙。通过软硬牵引结合、研发1600 t张拉系统,实现了大规格平行
【摘 要】博物馆、纪念馆作为我国民族文化的重要载体,在社会发展中,具有不可替代的作用。讲解员是博物馆、纪念馆发挥其社会教育服务功能的主力军。作为一线服务者的讲解员,怎么将这个工作变成自己的事业?怎样将工作变成自己的追求?怎样拥有自己的职业理想?这一系列问题是每个讲解员必须去思考和总结的。  【关键词】讲解员;层次;措施  博物馆、纪念馆是承载着中国民族文化的一个重要的场所和载体,在实际工作中要真正
期刊
新发展阶段是以习近平同志为核心的党中央在新时代视域下,以整体性战略视野把握我国经济社会发展规律作出的时代性判断。以大历史观为审视视角为掌握新发展阶段合理性、规律性提供了新的思维、视野和方法。从历史性进路来看,在“纵”与“横”所构成的整体中掌控新发展阶段是中国社会主义发展阶段前进的应然,亦是世界社会主义发展信心重构的必然;从时代性创新角度来看,新发展阶段是时代性、阶段性、连续性、整体性、创新性在新时代的综合表达;从引领性构建角度来看,实现人的自由和全面发展、实现中华民族伟大复兴、构建人类命运共同体是新发展阶
【摘 要】在各项社会主义事业蓬勃发展、日新月异的今天,档业发展的出路在哪里?只有与时俱进、开拓创新,才能们的档案事业适应和服务于社会各项事业,才能使档案充满生机和活力,才能使档案事业可持续发展。  【关键词】档案;创新;发展  一、档案工作创新的意义  1.档案工作创新是随着人们的档案利用意识的增强强档案资源建设的需求。首先,随着社会的进步,人们案利用意识越来越强,对档案内容的要求也越来越多,提供
期刊
【摘 要】随着信息技术的高速发展,网络购物因其便捷高效的特点受到越来越多的消费者喜爱,也带动了我国经济增长。但网购中不可避免的会涉及相关的个人信息或隐私,随着网络购物人群的崛起,个人信息的泄漏与不正当利用愈来愈频繁,对相关的个人信息保护显得愈来愈有必要。  【关键词】网上购物;个人信息;个人信息泄漏;个人信息保护  一、网购中关于个人信息的相关概念  1.网络购物  网络购物是指由商家在网络上设立
期刊
【摘 要】网络文化是当前互联网交流环境中的一种主流文化,它的表达方式更加平民化,传播速度快、信息涵盖面比较宽广,涉及到广大人民群众日常生活中的方方面面。网络文化的传播和发展受到中国传统优秀文化的影响,形成了独具特色的中国网络文化。既有继承、又有冲击,网络文化以不同的传承内容和传承方式对传统文化进行再现。本文从优秀传统文化的特点进行分析,提出几点有利于推动网络文化良性发展的可行性建议。  【关键词】
期刊
【摘 要】随着经济的高速发展,无形资产发挥的作用日趋显著,其创造的收益在整体中的占比正在不断增加。然而,当前我国在企业无形资产方面的管理并不够健全,无形资产流失问题严重。为此,本文将重点探讨我国企业无形资产管理。  【关键词】无形资产;企业;管理  企业资产有无形资产与有形资产之分,其中,企业的无形资产需企业开展长期开发与培育。从市场发展的整个趋势上看,企业未来发展潜能大致体现在无形资产上,无形资
期刊
【摘 要】社会的高速发展对档案管理工作提出越来越高的要求。档案工作正迅速由传统简单化向现代复杂化、科学化转变,档案工作者也必须迅速由传统守旧型向现代创新型管理人才转变。时代迫切要求提高档案工作者的素质。现就这一问题谈几点看法。  【关键词】档案;工作者;素质  一、档案工作者应努力提高政治素质  1.要坚持学习马列主义、毛泽东思想和邓小平理论,学习党和国家的大政方针及时事政治,努力提高自己的思想政
期刊