摘 要:.NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境..NET是致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的代码开发平台,正是基于这些优势使得.NET得到快速的发展.也正是因为突出这些优势,使得在.NET平台上开发的应用程序容易被逆向工程.使用逆向工程给代码安全带来更大的挑战,针对日益严重的代码安全问题,代码开发者也采用了许许多多的代码保护技术,如强名称、混淆、加壳等.本课题所研究的是一种抵制静态逆向分析的防反射代码保护技术.
防反射代码保护技术是基于.NET微软中间语言的保护.将编译过后的动态链接库文件与可执行文件转换成字节数组形式,再由换位密码算法分别对字节数组进行加密.动态链接库文件加密且重命名复制到指定文件夹下,可执行文件加密后以非托管的方式重新编译成受保护的可执行文件,而受保护的可执行文件在运行时可以自行解密,还原出原始数据以确保受保护的可执行文件能够正常工作.
本课题实现了对.NET代码的保护,使得反射器无法查看应用程序的源代码,但是其保护对象仅仅是.NET平台下开发的应用程序,因此在保护范围上有待提高.随着逆向分析技术的快速发展,代码保护意识愈加强烈,防反射代码保护技术因其强大的抵抗逆向分析的能力而具有一定的实用价值.
关键词:.NET安全;逆向工程;防反射代码保护
目录
摘要
ABSTRACT
第1章 绪论-1
1.1 课题意义-1
1.2 研究现状-2
1.3 本文的工作-3
1.4 论文组织结构-3
第2章 .NET代码保护系统总体框架设计与实现-5
2.1 .NET代码保护系统的概念-5
2.2 .NET代码保护系统的设计目标-5
2.2.1 代码保护系统保护强度-5
2.2.2 代码保护系统工作效率-6
2.2.3 受保护应用程序的性能-6
2.2.4 受保护应用程序的移植性-6
2.3 防Reflector的.NET代码保护的总体结构设计-7
2.4 本章小结-9
第3章 .NET代码保护的各功能模块的设计与实现-11
3.1 .NET代码保护各功能设计与实现-11
3.1.1 获取字节数组模块-11
3.1.2 字节数组加密模块-12
3.1.3 文件复制模块-16
3.1.4 程序自解密模块-17
3.1.5 封装模块-17
3.2 本章小结-18
第4章 防Reflector的.NET代码保护的测试与结果分析-21
4.1 防Reflector的.NET代码保护测试-21
4.1.1 测试环境-21
4.1.2 测试过程-21
4.2 测试结果分析-26
第5章 总结与展望-29
5.1 总结-29
5.2 展望-29
参考文献-31
致 谢-33