只有累積,沒有奇蹟

2019年3月31日 星期日

[.NET] ILSpy 程式碼反組譯工具

前言
昨天上保哥非同步課程時有提到反組譯工具 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 初體驗
  1. 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    
載入完 dll 後點選加入的 dll 名稱右邊就會出現反組譯後的內容,在與原始代碼相比較發現會有些不同之處,例如加上 private、new TimeSpan 變為 default(TimeSpan) 等編譯後的差異
  1. class Program
  2. {
  3. static TimeSpan total = new TimeSpan();
  4. static object tsLock = new object();
  5. static async Task Main(string[] args)
  6. {
  7. // 省略
  8. }
  9. }
在上面 Toolbar 選項還可以選擇查看 C# 或是 IL Code,以及透過各個 IDE 與 C# 版本編譯後 Code 內容 (預設是最新 C# 8.0 / VS2019),從中可以發現編譯出來的代碼會因為版本不同會有所差異,可以參考下圖
透過以上說明,可以了解使用上十分容易上手,如果想了解更多細節與內容,可以參考官網說明 : ILSpy

參考
ILSpy

Related Posts:

  • [Tool] Log Parser Studio - 搜尋 Log 好幫手前言 這幾天專案遇到些小亂流,必須找到特定條件的應用程式 Log 做資料的確認及重送機制,雖然系統有使用 ELK但由於專案太舊導致 Log 沒紀錄在 ELK 上面,為了快速找到多台應用程式中的 Log 資訊,在搜尋過程中爬 Log 使用 Log Parser 工具來快速搜尋 Log 資訊,避免過度花費人工的方式逐一進行搜尋 Log,這篇文章就針對 Log Paresr Studio 工具做簡單的介紹與說明,若有問題歡迎提出一起討論或是給予指導。 … Read More
  • [VisualStudio].NET 程式碼品質分析利器 SonarLint前言  前陣子部門導入 SonarQube 來分析程式碼品質的工具,會定期掃描當前 GIT 上前後端程式碼分析其代碼質量、Code Smell、找到可能潛在的問題、安全漏洞、單元測試涵蓋率,並可透過視覺化 Dashboard 介面查看目前分析代碼的狀態,且支援分析 25 種以上程式語言,可以說是整合性相當高的程式碼分析工具。今天與同事討論提到 SonarQube 有出擴充工具 SonarLint 與&nbs… Read More
  • [Chocolatey] Windows 套件管理工具 - Chocolatey 初體驗前言  之前在外面上課時就聽過講師介紹 chocolatey 套件管理工具,但當時趕專案上線就沒有再深入研究,直到最近要在公司筆電安裝軟體才想起 Windows 有此神奇的套件管理神器,今天就針對此神器筆記安裝與功能介紹,避免初老症狀病發還要再次請教 google 大神。  Chocolatey 是什麼 可以吃嗎 ? 在過去在 Windows 安裝軟體應用程式時,需要下載安裝檔與使用其軟體安裝流程步驟等各種 GUI 介面… Read More
  • [.NET] ILSpy 程式碼反組譯工具 前言 昨天上保哥非同步課程時有提到反組譯工具 ILSpy,詢問上課的學生發現聽過與使用過的並不多,聽到這點覺得有點訝異,自己曾在某間公司任職時因為 Production 上的重要程式沒有版控,僅能透過反組譯工具 ILSpy 或是 .NET Reflector 得知程式邏輯進而重寫該專案,後來 .NET Reflector 改收費後就都不在使用,這邊就針對 ILSpy 工具做簡單介紹與說明,若有問題歡迎提出一起討論或是給予指導。 … Read More
  • [Tool] JSON Viewer Awesome - 理解 JSON 結構的好幫手介紹 Json (JavaScript Object Notation) 是一種輕量級的資料交換格式,方便開發者在開發與閱讀,與早期使用的 XML 相比在進行資料交換時,沒有其多餘的格式可以降低傳輸封包的大小,增加其封包傳遞的效率 (...不自覺透露出年紀了),這些都是給電腦看不是給人看得,如果開發者需要確認 Json 元素的值是否正常時,就另外需要透過工具達到,今天要分享的是 Chrome 擴充套件 - JSON Viewer Awe… Read More

2 則留言:

  1. Cool, 可以請教您是使用哪一套軟體標記紅色的1、2嗎?

    回覆刪除
    回覆
    1. Hi afgn,
      我是使用 Snagit 這套軟體截圖與標記1、2資訊的喔 ! 軟體介紹可以參考 https://briian.com/119/
      希望對你有幫助 :)

      刪除

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com