如何反编译 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 的建议,我设法从反编译的程序集中获得了应用程序 运行。这是我遵循的让它工作的过程
- 我已经使用 Reflector(试用)将各种程序集反编译到项目中。
- 我在 Visual Studio
中创建了一个空白的 Web 表单应用程序
- 我通过 visual studio
从网站添加了 .aspx
个页面到项目中
- 然后从反编译的 'application.dll' 项目中添加 .cs 文件(因为这是解决方案中的网站项目。一些文件必须重命名以匹配 `.cs 中的
codebehind
引用。 aspx.files
- 每个额外的项目,例如
applicationCore.dll
然后添加到解决方案
- 需要更新每个项目的引用,并且必须将对新添加项目的引用添加到启动项目中
- 网站建了这么久,有上千个语法错误。解决它们的最简单方法是使用 Notepad++ 和查找和替换。为了安全起见,我按照 Visual Studio 中的错误逐个文件执行此操作,而不是批量查找和替换
- 尝试构建时,我注意到缺少所需程序集的错误,因此我将子项目的构建输出目录更改为 Web 项目的
bin
文件夹
- 我添加了来自原始网站 web.config 的连接字符串和设置。我逐行执行此操作以确保我没有破坏任何东西,这样我就可以追踪每次添加的结果
- 终于搭建成功了!
其他步骤
还有语法错误,我认为是由于反编译过程造成的。需要添加一些外部参考,并且由于项目的年龄而有轻微的变化,例如asp:AjaxScriptControl
更改为 asp:ScriptControl
(使用 Nuget 添加包后)。我还必须为此应用程序安装 Crystal 报告,并且必须购买 Telerik 许可证,因为正在使用 UI 组件(尽管我会看看我是否可以使用开放/本机替代方案,因为我通过应用程序工作)。
我已经使用凭据登录(我确实必须设置正确的起始页)并尝试了一些基本的 CRUD 操作。有些愚蠢的问题必须解决,例如身份验证无法正常工作,如果您访问受保护的页面,则不会进行重定向,但与我最初遇到的问题相比,这些问题相对较小。
我必须说的是,每个错误都已使用该站点的问答解决了!这一切都在不到 6 小时内完成。
刚刚继承了一个源码早已失传的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 的建议,我设法从反编译的程序集中获得了应用程序 运行。这是我遵循的让它工作的过程
- 我已经使用 Reflector(试用)将各种程序集反编译到项目中。
- 我在 Visual Studio 中创建了一个空白的 Web 表单应用程序
- 我通过 visual studio 从网站添加了
- 然后从反编译的 'application.dll' 项目中添加 .cs 文件(因为这是解决方案中的网站项目。一些文件必须重命名以匹配 `.cs 中的
codebehind
引用。 aspx.files - 每个额外的项目,例如
applicationCore.dll
然后添加到解决方案 - 需要更新每个项目的引用,并且必须将对新添加项目的引用添加到启动项目中
- 网站建了这么久,有上千个语法错误。解决它们的最简单方法是使用 Notepad++ 和查找和替换。为了安全起见,我按照 Visual Studio 中的错误逐个文件执行此操作,而不是批量查找和替换
- 尝试构建时,我注意到缺少所需程序集的错误,因此我将子项目的构建输出目录更改为 Web 项目的
bin
文件夹 - 我添加了来自原始网站 web.config 的连接字符串和设置。我逐行执行此操作以确保我没有破坏任何东西,这样我就可以追踪每次添加的结果
- 终于搭建成功了!
.aspx
个页面到项目中
其他步骤
还有语法错误,我认为是由于反编译过程造成的。需要添加一些外部参考,并且由于项目的年龄而有轻微的变化,例如asp:AjaxScriptControl
更改为 asp:ScriptControl
(使用 Nuget 添加包后)。我还必须为此应用程序安装 Crystal 报告,并且必须购买 Telerik 许可证,因为正在使用 UI 组件(尽管我会看看我是否可以使用开放/本机替代方案,因为我通过应用程序工作)。
我已经使用凭据登录(我确实必须设置正确的起始页)并尝试了一些基本的 CRUD 操作。有些愚蠢的问题必须解决,例如身份验证无法正常工作,如果您访问受保护的页面,则不会进行重定向,但与我最初遇到的问题相比,这些问题相对较小。
我必须说的是,每个错误都已使用该站点的问答解决了!这一切都在不到 6 小时内完成。