Jak dekompilować a.NET EXE do czytelnego kodu źródłowego C#?

Kilka lat temu napisałem aplikację C# dla klienta, ale nie mam już kodu źródłowego. Mam tylko EXE, który zainstalowałem na komputerze klienta. Czy jest jakiś sposób na wygenerowanie kodu źródłowego C# z EXE?

Author: MusiGenesis, 2008-10-07

7 answers

Reflector i jego dodatek FileDisassembler .

Reflektor pozwoli zobaczyć kod źródłowy. FileDisassembler pozwoli Ci przekonwertować go na rozwiązanie VS.

 174
Author: GEOCHET,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-30 15:50:57

Kiedy Red Gate powiedział, że nie będzie już darmowej wersji. Net Reflector, zacząłem używać ILSpyI JustDecompile. Znalazłem ILSpy do dekompilacji dokładniej niż JustDecompile (który jest nadal w wersji Beta). Red Gate zmienił swoją decyzję i nadal mają darmową wersję. Net Reflector, ale teraz lubię ILSpy.

Ze strony ILSpy ( http://www.ilspy.net/):

ILSpy jest przeglądarką open-source. NET assembly i dekompilator.

Funkcje ILSpy

  • Assembly browsing
  • IL demontaż
  • dekompilacja do C #
  • obsługuje lambdy i "zwrot plonu"
  • pokazuje dokumentację XML
  • Oszczędzanie zasobów
  • Wyszukiwanie typów / metod/właściwości (substring)
  • Nawigacja typu/metody/właściwości oparte na hiperłączu
  • typy bazowe/pochodne
  • Historia nawigacji
  • BAML to XAML decompiler
  • Zapisz Assembly as C# Project
  • Znajdź użycie pola / metody
  • Extensible via plugins (MEF)

Update:

15 kwietnia 2012, ILSpy 2.0 został wydany. Nowe funkcje w porównaniu z wersją 1.0:

  • Listy Montażowe
  • wsparcie dla dekompilacji drzew wyrażeń
  • wsparcie dla operacji podnoszonych na nullables
  • dekompilacja do Visual Basic
  • Wyszukiwanie wielu łańcuchów oddzielonych spacją (wyszukiwanie " Assembly manager " w ILSpy.exe znajdzie AssemblyListManager)
  • kliknięcie na zmiennej lokalnej podświetli wszystkie inne wystąpienia tej zmiennej
  • Ctrl + F może być użyty do wyszukiwania w widoku dekompilowanego kodu

Update:

  • ILSpy 2.1 obsługuje dekompilację asynchroniczną / oczekującą
 125
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-06 18:20:55

Reflector nie jest już ogólnie wolny, ale oferują go za darmo deweloperom open source: http://reflectorblog.red-gate.com/2013/07/open-source/

Ale kilka firm takich jak DevExtras i JetBrains stworzyło darmowe alternatywy:

DevExtras CodeReflect

JetBrains DotPeek

 60
Author: arc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-30 15:31:05

Reflector i dodatek File Disassembler od Denisa Bauera. W rzeczywistości produkuje projekty źródłowe ze złożeń, w których Reflektor sam w sobie wyświetla tylko zdemontowane źródło.

Dodał: mój ostatni ulubiony to JetBrains 'dotPeek .

 32
Author: ProfK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-13 14:02:41

Telerik JustDecompile jest darmowy i posiada funkcję tworzenia projektów z. NET assemblies.

 25
Author: kodefuguru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-15 19:16:00

Dziwię się, że nikt nie wspomniał o ildasmie Microsoftu. Może nie jest tak ładny jak ILSpy lub Reflector, ale pochodzi z Visual Studio tak wielu programistów już go ma.

Aby go uruchomić (zakładając VS 2013, powinno być podobne dla innych wersji):

  1. Wybierz Start > Wszystkie Programy > Visual Studio 2013 > Narzędzia Visual Studio.
  2. Kliknij dwukrotnie wiersz polecenia programisty dla VS2013.
  3. Uruchom "ildasm" z wynikowego polecenia / align = "left" /
  4. w narzędziu wybierz Plik > Otwórz i otwórz plik wykonywalny lub DLL.

Teraz możesz poruszać się po strukturze DLL. Kliknij dwukrotnie na członków klasy, aby zobaczyć IL. Użyj File > Dump, aby wyeksportować IL do pliku.

 22
Author: yoyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-24 17:24:47

Chcesz Reflektor .

 14
Author: Luke Halliwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 18:28:24