论文部分内容阅读
近年来,移动代码技术得到了极大的发展,并有着广泛的应用前景,但代码移动性所引发的安全问题阻碍了该技术在现实商业应用中的大规模使用。在这些安全问题中,如何保护移动代码不受主机的损害是传统安全技术无法处理的新需求。在恶意主机环境下,软件系统可以被逆向工程或被篡改,其机密性、完整性与可用性受到威胁。业界迫切要求简便和行之有效的保护软件与软件知识产权的方法。代码混淆作为一种防止逆向工程的技术应运而生。尤其随着Java语言的迅速发展引起了对混淆技术的研究热潮。这是因为Java目标代码——字节代码(bytecode)很容易被反编译为Java源代码,这就迫切要求有效的保护Java字节代码的方法。因此,恶意主机环境下用于软件保护的代码混淆技术的研究就具有重要的理论和现实意义,并越来越受到业界的重视。本文以保护软件,提高逆向工程代价为目标,分别从破解与保护两方面对逆向工程与代码混淆技术进行了深入的研究。针对Java字节代码的解析与混淆,我们实现了一个代码混淆系统原型——JOT,该系统是一个基于Java字节代码的综合代码混淆系统,也是本文研究成果的重要体现。本文的主要研究工作如下:(1)分析了逆向工程的概念、逆向工程的分类、逆向工程的研究方法等。并对形式化方法在逆向工程中的应用做了详尽的研究。(2)研究了当今主流的代码混技术,内容主要涵盖外形混淆、控制流混淆、数据混淆、类结构混淆以及预防性混淆这五类混淆技术,揭示了混淆变换具有的一些特性。(3)提出了一个通用的软件保护模型。该模型对具体应用领域的软件保护策略的制定具有积极的指导意义。其对软件的保护涵盖了5种安全服务:机密性、完整性、可用性、可靠性、鉴别。(4)提出一个通用的针对面向对象程序的混淆转换模型。该模型对制定具体的混淆转换方案具有一定的参考价值。(5)设计并实现了一个用于混淆转换Java字节代码的原型系统——JOT(Java Obfuscate Tool),JOT在实现外形混淆的同时,还实现类结构混淆。并且我们在系统中需要进一步扩展的部分留出了相应的接口以待完善。