繁体   English   中英

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

[英]How to decompile ASP.NET / C# Web Application

我刚刚继承了一个Web应用程序,其源代码早已丢失(最初写于2010年并被搁置)。 该应用程序具有一些与应用程序本身相关的.dll程序集,例如“ applicationCORE.dll”,“ applicationBI.dll”,“ applicationDATA.dll”和“ application.dll”

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

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

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

遵循David的建议,我设法从反编译的程序集中运行该应用程序。 这是我遵循的流程

  1. 我已经使用Reflector(在试用版中)将各种程序集反编译为项目。
  2. 我在Visual Studio中创建了一个空白Web窗体应用程序
  3. 我通过Visual Studio将网站的.aspx页面添加到了项目中
  4. 然后从反编译的“ application.dll”项目中添加.cs文件(因为这是解决方案中的网站项目。必须重命名某些文件以匹配“ .aspx。”文件中的代码codebehind引用)
  5. 然后将每个其他项目(例如applicationCore.dll )添加到解决方案中
  6. 每个项目的引用都需要更新,并且对新添加的项目的引用必须添加到启动项目中
  7. 由于该网站建于很久以前,因此存在1,000项语法错误。 解决它们的最简单方法是使用Notepad ++和“查找并替换”。 为安全起见,我通过遵循Visual Studio中的错误而不是批量查找和替换来逐个文件地进行此操作
  8. 尝试构建时,我注意到缺少所需程序集的错误,因此我将子项目的构建输出目录更改为Web项目的bin文件夹
  9. 我从原始网站的web.config中添加了连接字符串和设置。 我逐行执行此操作以确保没有破坏任何内容,以便可以跟踪每次添加的结果
  10. 终于,我有了一个成功的构建!

附加步骤还有一些我认为是由于反编译过程引起的语法错误。 需要添加一些外部引用,并且由于项目的使用年限而进行了细微的更改,例如asp:AjaxScriptControl更改为asp:ScriptControl (在使用Nuget添加软件包之后)。 我还必须为此应用程序安装Crystal Reports,并且由于要使用UI组件,因此必须购买Telerik许可证(尽管在我处理该应用程序时,我会看看是否可以使用开放式/本机替代方法)。

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

我必须说的是,使用本网站的问题和答案可以解决每个错误! 所有这些都在不到6个小时的时间内完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM