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?
7 answers
Reflector i jego dodatek FileDisassembler .
Reflektor pozwoli zobaczyć kod źródłowy. FileDisassembler pozwoli Ci przekonwertować go na rozwiązanie VS.
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ą
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:
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 .
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.
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):
- Wybierz Start > Wszystkie Programy > Visual Studio 2013 > Narzędzia Visual Studio.
- Kliknij dwukrotnie wiersz polecenia programisty dla VS2013.
- Uruchom "ildasm" z wynikowego polecenia / align = "left" /
- 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.
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 .
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