[C#, CSharp] .Net Framework程式開發與執行
執行過程
- Windows上的執行檔(檔名.exe)都要遵循Microsoft PE及COFF格式(Common Object File
Format),作業系統才能正確的載入並執行
- 標準的Microsoft PE執行檔含headers、native image sections(.data、.rdata、.rsrc、.text、...)
- Microsoft PE可擴充Section成為.Net PE。
- 安裝.net framework時,會將OS內附的PE Loader換成認得.Net PE檔的Loader。
- Loader會判斷PE檔有無CLR header,有則將相關的Sections交由CLR執行。
- .Net程式可以直接以執行檔方式執行。
- dumpBin.exe為VC++的工具,可查看PE檔的內容。
- dumpBin使用說明:http://support.microsoft.com/kb/177429/zh-tw
常見的PE Setctions | |
---|---|
.arck | 最初構建訊息 |
.bss | 未初始化的資料 |
.crt | 唯讀的C執行期資料 |
.data | 已經初始化的資料 |
.debug | 除錯用資料 |
.didata | 延遲輸入名稱表格 |
.edata | 輸出名稱表格 |
.idata | 輸入名稱表格 |
.pdata | 異常訊息 |
.rdata | 唯讀的執行期資料 |
.reloc | 重定位資料 |
.rsrc | 資源 |
.text | .exe、.dll可執行的程式碼 |
.tls | 執行緒局部儲存體 |
.xdata | 異常處理表 |
使用dumpBin.exe查看PE檔的內容
- 1先將下面的程式編譯成執行檔HelloWorld.exe
using System; using System.Collections.Generic; using System.Text; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!!"); } } }
- 2接下來在DOS命令列中輸入:
dumpbin HelloWorld.exe /all >> HelloWorld.bin
- 3再用文書編輯軟體打開HelloWorld.bin即可觀看HelloWorld的PE檔內容