是否有可用的工具來獲取您已經從C#或Visual Basic編譯的已經編譯的.dll或.exe文件,並從中獲取原始源代碼?
是否有可用的工具來獲取您已經從C#或Visual Basic編譯的已經編譯的.dll或.exe文件,並從中獲取原始源代碼?
ILSpy是一個很棒的開源反編譯器。
ILSpy功能
- 彙編瀏覽
- IL反彙編
- 支持C#5.0“異步”
- 反編譯為C#
- 支持lambda和'yield return'
- 顯示XML文檔
- 反編譯到VB
- 節省資源
- 將反編譯後的程序集另存為.csproj
- 搜索類型/方法/屬性(子字符串)
- 基於超鏈接的類型/方法/屬性導航
- 基本/派生類型導航
- 導航歷史記錄
- 從BAML到XAML反編譯器
- 將程序集另存為C#項目
- 查找字段/方法的用法
- 可通過插件(MEF)擴展
- 程序集列表
ul>
在成功使用之前,我已經使用過 JetBrains dotPeek(免費)。
我曾經使用過的任何JetBrains軟件都非常可靠。
它不是完全“原始源代碼”,但是它是非常易讀的C#-關於我希望得到的最接近的東西。從他們的網站報價:
dotPeek有什麼優點?
- 將.NET 1.0-4.5程序集反編譯為C#
- 支持。
dll
,.exe
,.zip
,.vsix
,.nupkg
和.winmd
文件- 快速跳轉到類型,程序集,符號或類型成員
- 輕鬆導航至符號聲明,實現,派生符號和基本符號,以及更多
- 通過高級顯示搜索結果來精確搜索符號用法
- 繼承鏈概述
- 支持從源服務器下載代碼
- 語法突出顯示
- 完全鍵盤支持
- dotPeek是免費的!
ol>
最後一點是免費啤酒中的,不是免費的。如言論自由。
有一個名為 JustDecompile的免費工具可以做到這一點。
一些功能:
- 創建Visual Studio項目從裝配體中導出,以導出丟失的項目或獲得多個類,而無需複制和粘貼代碼。目前,JustDecompile只能將反編譯的代碼導出到C#。
- 直接從命令提示符處導出代碼
- 快速加載核心.NET程序集(.NET 2,.NET3.5 ,.NET 4,.NET 4.5,WinRT元數據和Silverlight)
- 直接編輯加載到程序中的程序集
最近,我一直使用 dnSpy [由de4dot的創建者從ILSpy分叉]作為我的主要工具,用於反編譯和實時調試.NET代碼
https://github.com/0xd4d/dnSpy
與ILSpy的主要區別:
https://github.com/0xd4d/dnlib
dnlib被創建是因為de4dot需要一個強大的.NET程序集庫來處理所有類型的混淆程序集。 de4dot曾經使用Mono.Cecil,但是由於Mono.Cecil無法處理混淆的程序集,不完全支持混合模式程序集,無法以CLR的方式讀取.NET程序集以及de4dot所需的許多其他缺失功能,dnlib是必須的。該API之所以相似,是因為它使de4dot到dnlib的移植變得更加容易。
我已經多次使用.NET Reflector(注意:商業版,但可以試用),並且非常喜歡它:
http://www.red-gate.com/products/dotnet -development / reflector /
如果您對API級別的反編譯器感興趣: https://code.google.com/p/facile-api/(儘管在Java中)
對於ILSPY,我認為它是一個很棒的.net反編譯器。另外,請檢查de4dot以消除混淆。這是一個很酷的實踐寫照。 http://blogs.cisco.com/security/talos/reversing-multilayer-net-malware
編譯的Visual Basic可能是一種不同且痛苦的動物。 http://vrt-blog.snort.org/2014/08/discovering-dynamically-loaded-api-in.html?m=1