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

标签 c# asp.net decompiling

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

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

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

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

最佳答案

按照 David 的建议,我设法让应用程序从反编译的程序集中运行。这是我为使其工作而遵循的过程

  • 我已经使用反射器(在试用中)将各种程序集反编译为项目。
  • 我在 Visual Studio 中创建了一个空白的 Web 表单应用程序
  • 我添加了 .aspx从网站到项目的页面通过visual studio
  • 然后从反编译的“application.dll”项目中添加 .cs 文件(因为这是解决方案中的网站项目。必须重命名某些文件以匹配 `.aspx. 文件
  • 中的 codebehind 引用。
  • 每个额外的项目,例如applicationCore.dll然后将其添加到溶液中
  • 需要更新每个项目的引用,并且必须在启动项目中添加对新添加项目的引用
  • 由于该网站是在很久以前建立的,因此存在 1,000 多个语法错误。解决它们的最简单方法是使用 Notepad++ 和 Find and Replace。为安全起见,我通过跟踪 Visual Studio 中的错误而不是批量查找和替换
  • 来逐个文件地执行此操作。
  • 在尝试构建时,我注意到缺少所需程序集的错误,因此我将子项目的构建输出目录更改为 bin web项目文件夹
  • 我从原始网站的 web.config 添加了连接字符串和设置。我一行一行地做,以确保我没有破坏任何东西,这样我就可以追踪每个添加的结果
  • 终于,我有一个成功的构建!

  • 附加步骤
    还有一些语法错误,我认为是由于反编译过程造成的。需要添加一些外部引用,并且由于项目的年龄而略有变化,例如asp:AjaxScriptControl改为 asp:ScriptControl (使用 Nuget 添加包之后)。我还必须为此应用程序安装 Crystal Reports,并且必须购买 Telerik 许可证,因为有正在使用的 UI 组件(尽管我会在使用该应用程序时查看是否可以使用开放/ native 替代方案)。

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

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

    关于c# - 如何反编译 ASP.NET/C# Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45738148/

    相关文章:

    c# - Linq:数据表到列表。 Actor 阵容问题

    c# - 通用委托(delegate)线程

    javascript - 无法在 JavaScript 中设置 null 的属性 'value'

    c# - 如何将查询字符串参数转换为asp.net mvc 4中的路由

    java - 在反编译的混淆匿名内部类中找不到 "this.b.a.q()"方法

    java - 读取 Java .class 文件

    c# - 如何在 ASP.NET MVC 4 中实现全局化?

    c# - 将 Json 反序列化为 C# bool

    javascript - 使用 Twitter Bootstrap、C#、asp.net 和 javascript 上传文件

    ios - otool -L 文件名/路径不起作用