簡體   English   中英

如何將 .NET EXE 反編譯為可讀的 C# 源代碼?

[英]How do I decompile a .NET EXE into readable C# source code?

幾年前我為一個客戶寫了一個 C# 的應用程序,但我已經沒有源代碼了。 我所擁有的只是部署在客戶 PC 上的 EXE。 有沒有辦法從 EXE 生成 C# 源代碼?

Reflector及其插件FileDisassembler

反射器將允許查看源代碼。 FileDisassembler 將允許您將其轉換為 VS 解決方案。

當 Red Gate 說不再有免費版本的 .Net Reflector 時,我開始使用ILSpy和 Telerik 的JustDecompile 我發現 ILSpy 比 JustDecompile(仍處於 Beta 版)更准確地反編譯。 Red Gate 改變了他們的決定,仍然有一個免費版本的 .Net Reflector,但現在我喜歡 ILSpy。

從 ILSpy 網站( https://github.com/icsharpcode/ILSpy/ ):

ILSpy是開源的 .NET 程序集瀏覽器和反編譯器。

ILSpy 功能

  • 裝配瀏覽
  • IL 拆解
  • 反編譯為 C#
  • 支持 lambdas 和“收益回報”
  • 顯示 XML 文檔
  • 節約資源
  • 搜索類型/方法/屬性(子字符串)
  • 基於超鏈接的類型/方法/屬性導航
  • 基本/派生類型導航
  • 導航歷史
  • BAML 到 XAML 反編譯器
  • 將程序集另存為 C# 項目
  • 查找字段/方法的用法
  • 可通過插件擴展 (MEF)

更新:

2012年4月15日,ILSpy 2.0發布。 與 1.0 版相比的新特性:

  • 裝配清單
  • 支持反編譯表達式樹
  • 支持可空值的提升運算符
  • 反編譯為 Visual Basic
  • 搜索以空格分隔的多個字符串(在ILSpy.exe 中搜索“Assembly manager”會找到AssemblyListManager)
  • 單擊局部變量將突出顯示該變量的所有其他出現
  • Ctrl+F 可用於在反編譯代碼視圖中進行搜索

更新:

  • ILSpy 2.1 支持 async/await 反編譯

Reflector 通常不再免費,但他們確實向開源開發人員免費提供: http : //reflectorblog.red-gate.com/2013/07/open-source/

但是像 DevExtras 和 JetBrains 這樣的一些公司已經創建了免費的替代品:

DevExtras CodeReflect

JetBrains DotPeek

Reflector 和來自 Denis Bauer 的File Disassembler插件。 它實際上從程序集生成源項目,其中 Reflector 本身僅顯示反匯編的源。

補充:我最近最喜歡的是 JetBrains 的dotPeek

Telerik JustDecompile是免費的,並且具有從 .NET 程序集創建項目的功能。

我很驚訝沒有人提到微軟的ildasm 它可能不如 ILSpy 或 Reflector 漂亮,但它隨 Visual Studio 一起提供,因此許多開發人員已經擁有它。

運行它(假設 VS 2013,其他版本應該類似):

  1. 選擇開始 > 所有程序 > Visual Studio 2013 > Visual Studio 工具。
  2. 雙擊 VS2013 的開發人員命令提示符。
  3. 從結果命令提示符運行“ildasm”。
  4. 在該工具中,選擇文件 > 打開並打開您的可執行文件或 DLL。

現在您可以瀏覽 DLL 結構。 雙擊班級成員以查看 IL。 使用 File > Dump 將 IL 導出到文件。

你想要反射器

現在有各種 .NET / C# 反編譯器可用(2022):

我更喜歡 ILSpy,因為它是免費的,OSS,非常快(與其他軟件相比),維護得很好,它甚至被 Visual Studio 使用,並且反編譯代碼是准確的。 這篇博文在 .NET 反編譯器的叢林中詳細解釋了所有這些 .NET 反編譯器。

我很驚訝沒有人提到dnSpy dnSpy是一個調試器和 .NET 程序集編輯器。 即使您沒有任何可用的源代碼,您也可以使用它來編輯和調試程序集。

主要特點:

  • 調試 .NET 和 Unity 程序集
  • 編輯 .NET 和 Unity 程序集
  • 明暗主題

它是開源的,也是 dot net 中使用最廣泛的逆向工程工具之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM