2011-01-05 14 views
14

Wir haben eine Anwendung in der Produktion und der Code ist in vorkompilierter Form. Der Entwickler, der diese Anwendung entwickelt hat, hat das Unternehmen verlassen und wir haben keine Sicherung des Quellcodes. Der einzige Zugriff, den wir haben, ist Pre-Compiled-Code auf dem Server. Wir müssen jetzt die Probleme in der Anwendung beheben.Vorkompilierten Quellcode dekompilieren ASP.NET

Gibt es eine Möglichkeit, den PreCompiled-Code zu dekompilieren (den Quellcode zu extrahieren)?

Antwort

12

Öffnen Sie die DLLs in der .NET Reflector.

+0

Im vorkompilierten Code ist keine DLL enthalten. Die einzigen Dinge, die ich sehe, sind aspx-Seiten und einige andere Bilder, Skins Ordner – msbyuva

+0

@msbyuva: Haben Sie den bin-Ordner der Anwendung überprüft? – adamjford

+0

Ich sehe einige DLLs, ich öffnete dann durch .NET Reflektor, dann habe ich sie auseinandergebaut, aber habe keinen Code gesehen. Und wie kann ich die .aspx.cs Dateien sehen? – msbyuva

2

beginnen mit:

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

... plus:

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

Sie werden letztere neu kompilieren müssen, um es gegen v6.5 des Reflektors zu verbinden (die neueste , ab diesem Post.) Es ist ein gutes Add-on, wenn Sie vermeiden möchten, dass Sie jede einzelne Klasse in Dateien kopieren und einfügen müssen. Es wird eine vollständige Assembly als CS-Dateien ausgeben. Ich denke, dass es sogar eine csproj erzeugen kann.

Beide Werkzeuge sind frei.

+0

Es gibt keine DLL im vorkompilierten Code. Die einzigen Dinge, die ich sehe, sind Aspx-Seiten und einige andere Bilder, Skins-Ordner. Wie kann ich die aspx.cs-Seiten bekommen? – msbyuva

+0

Es gibt keine weiteren aspx.cs-Seiten, die eigentlich keine Seiten sind, sondern Quellcodedateien. Der C# -Compiler nimmt - wie alle Compiler - eine Sammlung von Quelldateien und wandelt sie in eine oder mehrere DLLs um. Sie können die ursprünglichen .cs-Dateien nicht wiederherstellen. Sie müssen alle Klassen als Quelldateien mithilfe der obigen Tools ausgeben und sie dann zu einem neuen Webprojekt neben den vorhandenen ASPX-Seiten hinzufügen. – x0n

+0

Danke ... wie vorgeschlagen Ich habe Reflektor verwendet und ich bin in der Lage, den gesamten Code in Klassendateien und Code hinter Dateien zu sehen. Nun, ich habe nicht verstanden, wie man das zweite Tool File Dissembler verwendet. Ich habe alle DLLs aus dem .NET-Reflektor extrahiert, wie kann ich das zweite Tool verwenden, um Quellcode aus diesen extrahierten DLLs zu extrahieren ??? Es tut mir leid, dass ich dich gestört habe ... – msbyuva

0

Ich habe festgestellt, dass DLL nur mit dem .NET Reflector Tool gelesen werden kann, aber den Quellcode nicht extrahieren kann. Und auch wenn die Webformulare vorkompiliert sind, können wir nicht einmal den Code hinter den Dateien zurückbekommen. Wir können nur den Code debuggen und analysieren.

+0

.NET Reflektor ist gut, aber es ist nicht kostenlos, ich fand dotPeek, die frei ist - http://www.jetbrains.com/decompiler/ – msbyuva

0

Ich hatte das ähnliche Problem und verwendet Reflektor, um es zu dekompilieren. Ich habe den Quellcode, dann änderte ich das Bit, das ich wollte, und neu erstellen. Dann kopierte ich diese DLL wieder auf Production Site. Es fing an, meine Änderungen widerzuspiegeln. Es war sehr einfach und überhaupt nicht schwierig, vielleicht weil die vorkompilierte Site für jede Seite dlls hatte und aktualisierbar war, also nur eine Code-Behind-Datei in dll hatte.

Zum Vergleich: http://www.reflector.net/

0

Wenn u .net reflecter.its importieren in Visual Studio installieren. dann haben Sie die .NET-Reflektor-Tools in der Menüleiste gesehen.

Klicken Sie auf .net Reflektor >> Wählen Sie Assembies (Dll-Datei) zu debuggen.

3

Um @ Antwort des xon zu aktualisieren:

Aufgrund einer kürzlichen Katastrophe Quelle Kontrolle musste ich mein Projekt von dem DLLs erholen. So traurig ich bin kenntnisreich über das Verfahren:

  1. Get Net Reflector von hier: http://www.red-gate.com/products/dotnet-development/reflector/

  2. Sie scheinen nicht FileDisassembler zu müssen.

  3. Laden Sie entweder Ihre Behälter in Reflektor oder doppelklicken Sie darauf.

  4. Beachten Sie, dass das .Net-Framework die ursprüngliche Projektdateistruktur möglicherweise nicht beibehalten hat. Wenn also einige Ihrer ASPX-Seiten denselben grundlegenden Klassennamen in verschiedenen .cs-Dateien verwenden (I.E. Inherits ist dasselbe, aber unterscheidet sich CodeFile), könnten Sie nicht einfach "Quellcode exportieren". Gehen Sie nicht blindlings Quelldateien exportieren. Es wird nicht funktionieren.

  5. Es wird noch etwas zu tun sein, bevor die alte Build-Schaltfläche gestartet werden kann. Zum Beispiel - DLLs können direkt auf die Getter/Setter der Eigenschaft verweisen. Das musst du reparieren.

Viel Glück.