摘要:
随着Java应用软件数量的日益递增,针对Java应用软件的逆向工程技术也是层出不穷。因此,如何对Java应用软件进行有效的安全加固也成为研究热点问题。尽管已经有很多Java应用软件的安全加固方案被提出,但是在CLASS字节码文件中仍然存在着大量可以被逆向工程所利用的信息。在这些信息中,方法之间相互调用所需要的参数信息就有可能成为一大安全隐患,逆向工程人员可以凭借于此实现对关键方法的快速定位,进而简化指令猜测攻击,大大降低了逆向工程的复杂度。本文针对上述安全问题展开分析研究工作,设计了一种新的隐藏方法描述符的途径,通过消除对方法的快速定位,有效增加了指令猜测攻击的难度,并在此基础上按不同需求分别提出了统一方法描述符混淆算法和归并方法集合混淆算法。这两种算法在原则上只隐藏方法间传递的类型信息,不会对程序原有的逻辑产生任何影响,生成后的代码可以直接在相应版本的JVM (Java虚拟机)上运行,无需借助额外任何代码或工具。为了验证方案的可行性,本文进行了系统实现,使用了 9个现实世界的Java应用软件作为混淆测试用例,并分别在混淆前后采集了应用程序的性能和占用空间指标,依次进行对比。除此之外,本文还从软件工程的角度对两种混淆方案的混淆强度进行了计算,实验结果表明本文提出的混淆方案除了各自应有的特性之外,还兼具增强内聚性、减少耦合性、增大方法平均复杂度等效果。
展开