2011-01-05 21 views
14

mamy aplikację w produkcji i kod jest w formie skompilowanej. Programista, który opracował tę aplikację, opuścił firmę i nie mamy kopii zapasowej kodu źródłowego. jedyny dostęp, jaki mamy, to wstępnie skompilowany kod na serwerze. Musimy teraz rozwiązać problemy w aplikacji.Dekompiluj skompilowany kod źródłowy ASP.NET

Czy istnieje sposób dekompilacji (wyodrębnić do rzeczywistego kodu źródłowego) kodu PreCompiled?

Odpowiedz

12

Otwórz biblioteki DLL w wersji .NET Reflector.

+0

Brak kodu DLL w prekompilowanym kodzie. Jedyne rzeczy, które widzę to strony aspx i inne obrazy, foldery skórek – msbyuva

+0

@msbyuva: Czy sprawdziłeś folder bin aplikacji? – adamjford

+0

Widzę niektóre biblioteki dll, otworzyłem następnie przez .NET Reflector następnie demontowałem je, ale nie widziałem żadnego kodu. A także w jaki sposób mogę zobaczyć pliki .aspx.cs? – msbyuva

2

Rozpocznij z:

http://www.red-gate.com/products/dotnet-development/reflector/

... Plus:

http://www.denisbauer.com/NETTools/FileDisassembler.aspx

musisz przekompilować ten ostatni, aby połączyć je przed v6.5 z odbłyśnikiem (najnowsza , od tego posta.) Jest dobrym dodatkiem, jeśli chcesz uniknąć ręcznego kopiowania i wklejania pojedynczej klasy do plików. Zrzuci cały zestaw jako pliki .cs. Myślę, że może nawet wygenerować csproj.

Oba narzędzia są bezpłatne.

+0

Brak pliku DLL w prekompilowanym kodzie. Widzę tylko strony aspx i inne obrazy, foldery skórek. Jak mogę uzyskać strony aspx.cs? – msbyuva

+0

Nie ma już stron "aspx.cs", które w rzeczywistości nie są stronami, ale są plikami kodu źródłowego. Kompilator C# - podobnie jak wszystkie kompilatory - pobiera kolekcję plików źródłowych i przekształca je w jedną lub więcej bibliotek DLL. Nie będzie można przywrócić oryginalnych plików .cs. Musisz zrzucić wszystkie klasy jako pliki źródłowe za pomocą powyższych narzędzi, a następnie dodać je do nowego projektu WWW obok istniejących stron aspx, które masz. – x0n

+0

Dzięki ... jak zasugerowałem użyłem reflektora i mogę zobaczyć cały kod w plikach klas i kodzie za plikami. No cóż, nie rozumiem, jak korzystać z drugiego narzędzia File Dissembler .. Wyodrębniłem wszystkie biblioteki dll z .NET odbłyśnika, w jaki sposób mogę użyć 2. narzędzia do wydobycia kodu źródłowego z tych wyodrębnionych bibliotek dll ?? Przepraszam, że przeszkadzam ... – msbyuva

0

Znalazłem, że biblioteka dll może być po prostu odczytana za pomocą narzędzia .NET Reflector, ale nie może wyodrębnić kodu źródłowego. A także po wstępnym skompilowaniu formularzy, nie możemy nawet odzyskać kodu znajdującego się za plikami. Wszystko, co możemy zrobić, to debugować i analizować kod.

+0

.NET Reflector jest dobry, ale to nie jest darmowe narzędzie, znalazłem dotPeek, który jest bezpłatny - http://www.jetbrains.com/decompiler/ – msbyuva

0

Miałem podobny problem i użyłem Reflektora, aby go zdekompilować. Dostałem kod źródłowy, następnie zmieniłem żądany fragment i przebudowałem go. Następnie skopiowałem dll ponownie do witryny produkcji. Zaczęło odzwierciedlać moje zmiany. To było bardzo proste i wcale nie trudne, może dlatego, że strona Precompiled miała biblioteki dll dla każdej strony i była aktualizowalna, więc miał tylko plik z kodem w dll.

Dla porównania: http://www.reflector.net/

0

Kiedy u zainstalować reflecter.its .net importować w visual studio. następnie zobaczyłeś narzędzia reflektora .net na pasku menu.

Kliknij na reflektor .net >> Wybierz asseblie (plik DLL) do debugowania.

3

Aby zaktualizować @ xOn za odpowiedź:

Ze względu na niedawną katastrofę sterowania źródłem miałem odzyskać mój projekt z DLL. Więc niestety jestem kompetentny w sprawie procedury:

  1. Pobierz .NET Reflector stąd: http://www.red-gate.com/products/dotnet-development/reflector/

  2. Nie wydaje się potrzebować FileDisassembler.

  3. Załaduj pojemniki do odbłyśnika lub kliknij je dwukrotnie.

  4. Należy pamiętać, że struktura .Net mogła nie zachować oryginalnej struktury plików projektu. Jeśli więc niektóre ze stron ASPX mają tę samą podstawową nazwę klasy w różnych plikach .cs (znacznik I.E. Inherits jest taki sam, ale różni się znacznikiem CodeFile), nie będzie można po prostu "wyeksportować kodu źródłowego". Nie ślepo eksportuj plików źródłowych. To nie zadziała.

  5. Będzie jeszcze trochę pracy do zrobienia, zanim będzie można po prostu odpalić stary przycisk kompilacji. Na przykład - biblioteki DLL mogą odwoływać się bezpośrednio do obiektów pobierających/ustawiających właściwości. Będziesz musiał to naprawić.

Powodzenia.