如何反编译 ASP.NET / C# Web 应用程序

How to decompile ASP.NET / C# Web Application

刚刚继承了一个源码早已失传的Web应用(原写于2010年,搁置)。该应用程序有一些与应用程序本身相关的 .dll 程序集,例如"applicationCORE.dll"、"applicationBI.dll"、"applicationDATA.dll" 和 "application.dll"

我已经看到 this question,建议的工具 (Just Decompile) 非常棒,它为我反编译的第一个程序集创建了 .sln 和 .csproj 文件。我的问题是如何将通过反编译创建的各种项目与已编译的 Web 应用程序文件 (.aspx) 合并,如何解析 .aspx 文件中的引用,即引用不再存在的代码隐藏文件,例如"default.aspx" 在反编译器创建 "default.cs" 文件时引用 "default.aspx.cs"。重命名 .cs 文件更安全还是我应该更新引用?

最后,每个 dll 是否会在解决方案中显示为单独的项目?

我意识到这可能被认为是一个重复的问题,但是似乎没有在线资源可以引导开发人员完成整个过程。

听从 David 的建议,我设法从反编译的程序集中获得了应用程序 运行。这是我遵循的让它工作的过程

  1. 我已经使用 Reflector(试用)将各种程序集反编译到项目中。
  2. 我在 Visual Studio
  3. 中创建了一个空白的 Web 表单应用程序
  4. 我通过 visual studio
  5. 从网站添加了 .aspx 个页面到项目中
  6. 然后从反编译的 'application.dll' 项目中添加 .cs 文件(因为这是解决方案中的网站项目。一些文件必须重命名以匹配 `.cs 中的 codebehind 引用。 aspx.files
  7. 每个额外的项目,例如applicationCore.dll 然后添加到解决方案
  8. 需要更新每个项目的引用,并且必须将对新添加项目的引用添加到启动项目中
  9. 网站建了这么久,有上千个语法错误。解决它们的最简单方法是使用 Notepad++ 和查找和替换。为了安全起见,我按照 Visual Studio 中的错误逐个文件执行此操作,而不是批量查找和替换
  10. 尝试构建时,我注意到缺少所需程序集的错误,因此我将子项目的构建输出目录更改为 Web 项目的 bin 文件夹
  11. 我添加了来自原始网站 web.config 的连接字符串和设置。我逐行执行此操作以确保我没有破坏任何东西,这样我就可以追踪每次添加的结果
  12. 终于搭建成功了!

其他步骤 还有语法错误,我认为是由于反编译过程造成的。需要添加一些外部参考,并且由于项目的年龄而有轻微的变化,例如asp:AjaxScriptControl 更改为 asp:ScriptControl(使用 Nuget 添加包后)。我还必须为此应用程序安装 Crystal 报告,并且必须购买 Telerik 许可证,因为正在使用 UI 组件(尽管我会看看我是否可以使用开放/本机替代方案,因为我通过应用程序工作)。

我已经使用凭据登录(我确实必须设置正确的起始页)并尝试了一些基本的 CRUD 操作。有些愚蠢的问题必须解决,例如身份验证无法正常工作,如果您访问受保护的页面,则不会进行重定向,但与我最初遇到的问题相比,这些问题相对较小。

我必须说的是,每个错误都已使用该站点的问答解决了!这一切都在不到 6 小时内完成。