【问题标题】:Decompile C# Exe with partial source code available使用部分源代码反编译 C# Exe
【发布时间】:2011-01-11 07:00:08
【问题描述】:

我在工作中维护一个 C# 程序,由于硬盘崩溃,我丢失了已部署版本的大量代码(这是我自己的错,因为没有经常推送 git 存储库),现在我必须对程序进行了一些更改。我有旧版本程序的源代码,我想反编译exe并将其与旧源合并以恢复丢失的代码。

我知道我可以使用反射器之类的工具进行反编译,但我不想手动将它与旧代码合并,因为我可以再次对更改进行编码(大约 1-2 天的工作)。这是可能的还是我必须手动完成代码转储?

【问题讨论】:

  • 我不知道任何自动反编译实用程序,我认为实际上没有这样的实用程序可用。到目前为止,Reflector 是 .NET 反汇编/反编译的最佳工具,并且做得很好......

标签: c# .net-4.0 reflector


【解决方案1】:

我建议你重新编译旧代码,然后用反射器反编译。

然后用反射器反编译当前的可执行文件,并区分这两者。这样,您只会看到所做的更改,并且可以将这些更改应用于旧源代码,而不仅仅是在反编译代码和原始源代码之间进行比较——这显然会产生大量无趣的差异(cmets,for一件事!)。

说实话,我看不出它会变得更好。当然,这将是一个手动过程,但它仍然可以为您节省一些时间。

【讨论】:

  • 非常好的建议。我会暂时离开这个问题以等待其他建议,但我想我稍后会接受。
  • 不一定,你可以使用patch来应用差异,这是完全自动的。当然,这假设您同意整个差异,他当然不会。
  • 我刚刚遇到了同样的情况,Reflector 工作得很好,谢谢!
【解决方案2】:

我必须这样做一次,我推荐 Dis#。

编辑:
现在,ILSpy 好多了

【讨论】:

  • Dis# 似乎并没有比反射器做更多的事情来解决我的问题,因为我不能在这个问题上花钱,所以我只能得到非常有限的试用。
  • 我不完全知道反射器的能力,但 Dis# 不仅可以一次为您创建所有源文件(在 C# 或 VB.NET 或 Delphi.NET 中),它还可以创建你整个 Visual Studio 项目,并添加所有引用。上次我试过,我反编译的项目马上就编译好了…… PS:我说过我会为你做的(如果你愿意的话),如果是的话,请给我你的电子邮件地址。
猜你喜欢
  • 2010-09-15
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 2012-02-17
  • 2010-09-17
  • 1970-01-01
  • 2011-09-28
  • 2018-08-03
相关资源
最近更新 更多