2011-01-05 186 views
14

我们有一个生产应用程序,代码是预编译形式。开发该应用程序的开发人员离开了公司,我们没有任何源代码的备份。我们唯一的访问权限是服务器中的预编译代码。我们需要现在解决应用程序中的问题。反编译预编译源代码ASP.NET

是否有任何方法反编译(提取到实际的源代码)预编译的代码?

回答

12

打开.NET Reflector中的DLL。

+0

预编译的代码中没有DLL。我看到的唯一的东西是aspx页面和一些其他图像,皮肤文件夹 – msbyuva 2011-01-05 21:02:59

+0

@msbyuva:你是否检查应用程序的bin文件夹? – adamjford 2011-01-05 21:05:21

+0

我看到一些dll,然后通过.NET Reflector打开,然后拆开它们,但没有看到任何代码。而且我怎样才能看到.aspx.cs文件? – msbyuva 2011-01-05 21:19:10

2

开始:

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

...加上:

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

你必须重新编译后把它和反射器V6.5链接(最新,因为这篇文章)。如果你想避免必须手工复制和粘贴单个类到文件,它是一个很好的附加组件。它会将完整的程序集转储为.cs文件。我认为它甚至可能会生成一个csproj。

这两种工具都是免费的。

+0

预编译的代码中没有DLL。我看到的唯一的东西是aspx页面和一些其他图像,皮肤文件夹..我怎样才能得到aspx.cs页面? – msbyuva 2011-01-05 21:03:32

+0

没有更多的aspx.cs“页面”,它们实际上不是页面,而是源代码文件。与所有编译器一样,C#编译器将获取源文件的集合并将它们转换为一个或多个DLL。您将无法获得原始的.cs文件。您必须使用上述工具将所有类作为源文件转储出来,然后将它们与现有的aspx页面一起添加到新的Web项目中。 – x0n 2011-01-06 06:52:29

+0

谢谢......建议我使用了反射器,并且我能够在类文件和代码背后的代码中看到所有的代码。那么,我不明白如何使用第二个工具文件分散器..我已经提取所有的DLL从.NET反射器,我怎样才能使用第二个工具来提取源代码提取的DLL的?我很抱歉打扰你... – msbyuva 2011-01-06 16:37:12

0

我发现dll只能使用.NET Reflector工具读取,但不能提取源代码。而且一旦webforms被预编译,我们甚至无法取回文件后面的代码。我们所能做的就是调试和分析代码。

+0

.NET反射器是好的,但它不是免费的工具,我发现dotPeek是免费的 - http://www.jetbrains.com/decompiler/ – msbyuva 2014-07-21 15:15:33

0

我有类似的问题,并使用反射器来反编译它。我得到了源代码,然后改变了我想要的位,然后重建它。然后我再次将该dll复制到生产站点。它开始反映我的变化。这很容易,并不难,可能是因为预编译的网站每个页面都有dll,并且可以更新,所以在dll中只有代码隐藏文件。

参考:http://www.reflector.net/

0

当U安装.NET reflecter.its导入视觉工作室。 然后您在菜单栏上看到了.net反射器工具。

点击.net反射器>>选择Asseblies(Dll文件)进行调试。

3

要更新@ x开的回答是:

由于最近的源代码控制的灾难,我不得不从DLL文件恢复我的项目。所以可悲的是,我有见地的过程:

  1. 从这里获取.net反射:http://www.red-gate.com/products/dotnet-development/reflector/

  2. 你似乎并不需要FileDisassembler。

  3. 可以在Reflector中加载您的垃圾箱或双击它们。

  4. 请注意.Net框架可能没有维护您的原始项目文件结构。因此,如果某些ASPX页面在不同的.cs文件中共享相同的基本类名称(I.E. Inherits标记相同,但CodeFile标记不同),则无法简单地“导出源代码”。 不要盲目导出源文件。它不会工作。

  5. 在启动旧的编译按钮之前,仍然会有一些工作要做。例如 - DLL可以直接引用属性的getter/setter。你将不得不解决这个问题。

祝你好运。