【发布时间】:2013-09-10 23:11:50
【问题描述】:
有一个相当老的程序我必须修改以进行一些相对较小的更改 - 有一些控制变量,如枚举结构、魔术字符串和来自以太的数字,在过去 4-5 年左右的时间里运行良好,但现在都不好了。然而,自然而然地,在随后的几年里,代码已经丢失,所以我们只有一个反编译选项。
我已经使用 dotPeek 和 JustDecompile 从 .dll 文件和 .exe 文件中获取 .csproj 文件(总共有 4 个 dll 和 1 个 exe),但是这两种解决方案都以几乎无穷无尽的语法流告终错误,以及在 dotPeek 的情况下,诸如对编译器变量的引用等问题的符号。
显然,我可以尝试仔细检查每个文件并尽我所能修复每个语法错误,但看起来这可能需要一周的努力。我以前从来没有做过反编译的方法,所以当我意识到我正在看的路径时,我立即怀疑我是否不知道自己在做什么。
对于.net 中的反编译项目,这种情况听起来正常吗?有什么方法可以更有效地制作可构建的项目?我用错工具了吗?这是混淆的症状吗(我完全没有经验)?
提前致谢,如果需要更多信息,请离开 cmets - 因为这有点超出我的范围,我不能完全确定什么是有用的信息,什么不是。
【问题讨论】:
-
您可以尝试 ILSpy,以确保 :-)
-
当然,我会试一试!当然不能再坏了! :p
-
一定要使用最新的程序更新。 dotPeek 的早期版本存在错误,最新版本 (1.1.1.33) 似乎更适合我的项目。
-
我已经看到了很多 - 从 .NET 3.0(或 3.5,我不记得是哪个)开始,当他们开始向 C# 添加大量编译器技巧时,如 lambda、自动属性和像这样的东西,反汇编的代码很难重新组装。我建议的一件事是尝试 .NET Reflector - 它们的存在时间最长,因此它们很有可能已经解决了部分或全部问题。它不再免费,但如果它能够解决您的问题,可能值得付费。
标签: c# .net decompiling