基于Hotspot 的虚拟机加密方法研究
2014-01-21陈冰,魏江
电子设计工程 2014年20期
关键词:规范
陈 冰,魏 江
(西北工业大学 电子信息学院,陕西 西安 710072)
Java语言以其“一次编写,到处运行”的思想和较为安全的内存管理访问机制,实现了热点代码检测和运行时编译及优化,使得Java应用随着运行时间的增加而获得更高的性能。Java有一套完善的应用程序接口,还有大量来自商业机构和开源商业社区的第三方类库来帮助实现各种各样的功能[1]。Java的这些优势大大提升了程序的开发效率,同时也给开发者带来了一个烦恼,Java的跨平台特性使得Java源代码被编译为一种中间代码——字节码,字节码可以较容易地被反编译为可读性很高的源代码。无论采用何种形式的代码混淆和自定义Classloader,只要依据Java虚拟机规范[2]对加密后的字节码文件进行文件格式比对和逻辑分析很容易获取软件源码,使软件的安全和知识产权难以保护。采用加密狗将部分软件核心算法分离至硬件的方式能有效的提高程序的安全性,但会增加硬件成本并占用本地接口资源且不便于远程部署。本文提出一种解决方案,基于开源Hotspot虚拟机,通过定制虚拟机、加密字节码文件和修改类的生命周期3种方式来提高对Java源码的保护,将传统对Java软件加密的思路由字节码文件拓展到虚拟机内部,使逆向工程难度由反编译字节码提高至对二进制文件的破解,显著提升了软件的安全性。
1 字节码文件格式、类生命周期及传统软件保护方法
Java源码编译后生成的字节码文件具有非常好的跨平台特性,该特性正是基于字节码文件格式遵循Java虚拟机规范,可以由任意平台下的虚拟机解释运行。……
登录APP查看全文
