一直都想寫篇文章來記錄下我對託管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文件格式的時候,元數據表中相關的表都會出現相關記錄。
待續未完,敬請關注。 ^_^