讲了这么多,还是我们来谈一谈从加解密的角度看,.NET是什么?
.NET程序加解密技术基础——软件安全专家单海波谈.NET程序加解密技术
转载一、什么是.NET?
微软官方给出的定义是:.NET框架是支持生成和运行下一代运行程序内部Windows的组件。同时,.NET还有很多别的平台上的实现,只要符合计算机制造商协会规定的公共语言基础框架CLI的平台,我们都可以实现.NET的平台。比如说MONO,还有SSCLI。
在本文中,我们主要的议题还是围绕在第一点,Windows平台的应用。
首先,.NET是一个面向对象的框架。
其次,它是个将软件部署和版本控制冲突最小化的代码执行环境。我讲这些涉及到以后加解密中间需要的一些特点。
第三,它是一个可提高代码执行安全性的代码执行环境,这点后面也会提到。.NET生成中间代码以后,通过即时编译,会比JAVA运行速度快一些。
最后一点,确保基于.NET的框架代码可以和任何代码集成,这是最大的特色,就是编程语言的统一。
讲了这么多,还是我们来谈一谈从加解密的角度看,.NET是什么?
讲了这么多,还是我们来谈一谈从加解密的角度看,.NET是什么?
一句话,就是构建于操作系统之上的虚拟机。我们今天谈的.NET包含两个部分,一个是通用语言运行时,也就是CLR。
图1是一个Windows平台上的.NET框架基本结构示意图,大家可以看到有很多各种不同的编程语言,经过中间整合为元数据,在底层Windows与应用程序中间最大的框就是.NET,两个部分,左边这块是CLR,是它的运行环境,右边是.NET的类库,结构就是这样。
图1 Windows系统上的.NET框架结构
二、加解密所关注的.NET带来的改变
1、PE文件结构的改变
.NET作为新的平台,肯定引进一些新的技术。我们讨论的是加解密,因此我们有关注的特殊点,第一是在PE结构上带来的一些改变,大家很清楚PE结构是Windows平台上可执行程序的结构,普通的PE文件保存的是机器指令的编码,图2是典型的普通的PE文件示意图。
图2 普通的PE文件
但是.NET下的PE文件,在.NET下叫程序集,其保存的是另外两种数据,叫元数据和MSIL,当然同时还保存其他的数据,但主要是元数据和MSIL,中间语言。
在.NET下,PE结构中改变最大的属于.text节,它包含.NET的基本结构和数据的比如说CLR头,一些输入表,元数据等,这是.NET对PE文件的最大的改变。
讲到这里引出.NET中一个非常重要的概念,元数据。什么是元数据?字典上解释为描述数据的数据,用在.NET上也是非常合适的。首先它本身就是一个数据,0101,第二它描述了.NET程序的全部信息,一个.NET程序想正常运行,必须是一个合法的.NET程序,必须包含合法完整的元数据。因此我们说.NET程序是自描述的,运行的时候,程序集本身包含了所有信息,不需要寻找别的依赖性的信息(比如注册表中)。
但是程序集的这种自描述的性质,使得反编译时的信息更加丰富,结合MSIL的特征,使得反编译的结果近似源代码。如图3所示,左边这张图是一个反编译的图,再看看点击的方法,所有的名称都被显示了出来。所以说元数据还是挺可怕的。
图3 程序集的这种自描述性质使得反编译时信息更加丰富,结合MSIL的特性,使得反编译结果近似原代码
下面简单介绍一下元数据的基本结构,元数据是以数据流的形式保存在文件中,各种有不同的形式,一个是堆,一个是表,流是统称,而堆和表是存在形式。
图4表示了.NET下的六个元数据堆,第二个流是Blob,所有二进制数据都保存在Blob中,第三个是GUID,每个程序集唯,这个比较简单。第四个流,US代表用户字符串,红色标示的是比较常见的,和加解密关系比较重要的,因为用户字符串中保存了比较关键的信息,。下一个#-,最重要的流,所有的堆存在于这个流中。
图4 .NET下的6个元数据堆
图5的倒数第二行介绍了所有的元数据堆,也就是.NET的元数据表,从00到44,大家看看这些名称基本上反映了.NET面向框架结构,基本上结构从名称中就可以看出来了。
图5 .NET的元数据表
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SpringBoot 接口数据加解密解说,你的系统真的安全吗?
SpringBoot 接口数据加解密解说,你的系统真的安全吗?
接口加密解密 接口安全 java -
解密数仓的SQL ON ANYWHERE技术
如果能在一个客户端中使用SQL语句操作不同的大数据组件,将极大提升使用各种大数据组件的效率。
HDFS SQL hdfs GaussDB DWS SQL On Anywhere -
【信管1.15】安全(二)加解密技术
安全(二)加解密技术上一篇课程中我们了解到的是很多关于信息系统安全的概念、等级、分类等内容,
安全 数据 数字签名 非对称加密 -
加解密技术,以及私有CA的搭建
加密机技术和openssl的使用
加密、解密、openssl