第9章 .Net平台加解密①
本章将简要介绍微软.Net框架下的安全问题,内容基本涵盖.Net下本机Windows程序保护的各个方面,包括强名称、混淆、加壳、加密等常用保护手段,以及相应的逆向方法。
9.1 .Net概述
2002年微软正式发布了.Net的第一个版本,从此,基于.Net平台的各种软件产品逐渐增多,最新版本的Windows Vista已经直接内置了.Net Framework 3.0。由于越来越多的企业及程序开发者将产品定位在该平台上,.Net软件的保护就成为一个不可回避的课题摆在大家面前。本节主要介绍基本概念,读者应将重点放在理解.Net框架的概念和程序的运行方式上。
9.1.1 什么是.Net
.Net是微软设计的独立于操作系统之上的平台,可以将它看成一套虚拟机,无论机器运行的是什么操作系统,只要该系统安装了.Net框架,便可以运行.Net可执行程序,享受基于.Net的各类服务。上句话是从用户角度出发的观点,如果从Windows系统的角度来理解,.Net就是一系列运行于Ring 3层的DLL文件。
对于加解密的学习者,可以从以下三个方面来理解.Net。
(1)统一了编程语言:无论程序是用C#,还是C++,或是VB编写,最终都被编译为.Net中间语言IL;
(2)扩展了PE文件的格式:可执行文件中不再保存机器码,而是IL指令和元数据,部分结构也被改变用于保存.Net的相关信息;
(3)改变了程序的运行方式:Windows不再直接负责程序的运行,而由.Net框架进行管理,框架中的JIT引擎负责在运行时将IL代码即时编译为本地汇编代码再执行。
到本文写作时为止,.Net的正式版包括1.0、1.1、2.0、3.0和3.5。不同版本的.Net框架可以在同一个系统中共存,这是.Net相对传统DLL式程序兼容性的重要改进之一。本章内容以目前最流行的Windows XP加.Net 2.0平台为主,兼顾1.1平台。2.0版之后的.Net内核基本相同,只是新增了一些企业功能。
|