一直都想写篇文章来记录下我对托管PE文件的研究。无奈一直没有时间来敲下这篇文章。
在这篇文章里,我不去介绍windows下PE文件的具体格式,也不去介绍一个托管或者是非托管PE文件的加载运行方式,更加不去介绍一个PE文件里面的各个头部以及整体结构的各个部分的含义。
而是侧重于介绍,基于托管环境下,DotNet对基本的PE/CoFF文件格式做了那些扩充,CLR头部介绍,以及元数据和IL代码详析解析。主要侧重从静态文件的角度,来剖析DotNet下最基本的模块的结构,以及这样的结构如何适应一个托管的环境。
拟把PE文件格式里里外外从上到下一点一点的完全解剖一遍。
首先,还是从一段C#代码开始:
class Program
{
public const int conField=122*1119;
public readonly int roField;
private int _property;
public int Property
{
get {return _property; }
set{_property = value; }
}
static void Main(string[] args)
{
(new Program()).Method();
}
public void Method()
{
System.Console.ReadLine();
}
}
之所以定义这么多类型和字段,主要是为了在解说托管PE文件格式的时候,元数据表中相关的表都会出现相关记录。
待续未完,敬请关注。 ^_^