前言
昨天上保哥非同步課程時有提到反組譯工具 ILSpy,詢問上課的學生發現聽過與使用過的並不多,聽到這點覺得有點訝異,自己曾在某間公司任職時因為 Production 上的重要程式沒有版控,僅能透過反組譯工具 ILSpy 或是 .NET Reflector 得知程式邏輯進而重寫該專案,後來 .NET Reflector 改收費後就都不在使用,這邊就針對 ILSpy 工具做簡單介紹與說明,若有問題歡迎提出一起討論或是給予指導。
ILSpy 安裝
ILSpy 是一套 Open Source 的反組譯套件,目前最新版為 5.0 preview 版本且支援 C# 7.3 與 8.0,可以透過兩種方式進行安裝,如下所示
官網下載
下載安裝檔可以透過 Github 網頁 : 傳送門
Chocolate 安裝
或是也可以透過 Chocolate 進行安裝,沒用過請服用此文 : Windows 套件管理工具 - Chocolatey 初體驗
使用方式
左邊區塊為導覽,可以點選你想查看的 dll,右邊是反組譯的內容,舉例來說想了解 System.Net 底下有 WebRequest 的連線 timeout 時間,就可以發現程式碼定義預設逾時時間為 100000
載入 DLL
點選左上角 File > Open 可以載入 dll,一般開發 dll 都存在於專案目錄 bin 資料夾(project / bin)底下,如果是 .NET Core Console 專案,bin 底下則會有兩個資料夾分別是 net461 以及 netcoreapp2.2
載入完 dll 後點選加入的 dll 名稱右邊就會出現反組譯後的內容,在與原始代碼相比較發現會有些不同之處,例如加上 private、new TimeSpan 變為 default(TimeSpan) 等編譯後的差異
透過以上說明,可以了解使用上十分容易上手,如果想了解更多細節與內容,可以參考官網說明 : ILSpy
參考
ILSpy
昨天上保哥非同步課程時有提到反組譯工具 ILSpy,詢問上課的學生發現聽過與使用過的並不多,聽到這點覺得有點訝異,自己曾在某間公司任職時因為 Production 上的重要程式沒有版控,僅能透過反組譯工具 ILSpy 或是 .NET Reflector 得知程式邏輯進而重寫該專案,後來 .NET Reflector 改收費後就都不在使用,這邊就針對 ILSpy 工具做簡單介紹與說明,若有問題歡迎提出一起討論或是給予指導。
ILSpy 是一套 Open Source 的反組譯套件,目前最新版為 5.0 preview 版本且支援 C# 7.3 與 8.0,可以透過兩種方式進行安裝,如下所示
官網下載
下載安裝檔可以透過 Github 網頁 : 傳送門
Chocolate 安裝
或是也可以透過 Chocolate 進行安裝,沒用過請服用此文 : Windows 套件管理工具 - Chocolatey 初體驗
choco install ilspy --pre安裝完畢後點選 ILSpy.exe 開啟畫面如下
使用方式
左邊區塊為導覽,可以點選你想查看的 dll,右邊是反組譯的內容,舉例來說想了解 System.Net 底下有 WebRequest 的連線 timeout 時間,就可以發現程式碼定義預設逾時時間為 100000
載入 DLL
點選左上角 File > Open 可以載入 dll,一般開發 dll 都存在於專案目錄 bin 資料夾(project / bin)底下,如果是 .NET Core Console 專案,bin 底下則會有兩個資料夾分別是 net461 以及 netcoreapp2.2
class Program { static TimeSpan total = new TimeSpan(); static object tsLock = new object(); static async Task Main(string[] args) { // 省略 } }在上面 Toolbar 選項還可以選擇查看 C# 或是 IL Code,以及透過各個 IDE 與 C# 版本編譯後 Code 內容 (預設是最新 C# 8.0 / VS2019),從中可以發現編譯出來的代碼會因為版本不同會有所差異,可以參考下圖
透過以上說明,可以了解使用上十分容易上手,如果想了解更多細節與內容,可以參考官網說明 : ILSpy
參考
ILSpy