gpt4 book ai didi

c# - 将 .NET 3.5 程序反编译为 C#,导出问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:02 25 4
gpt4 key购买 nike

有一个相当老的程序我必须修改以进行一些相对较小的更改 - 有一些控制变量,如枚举结构、魔术字符串和来自以太的数字,在过去 4-5 年左右的时间里运行良好,但现在已经不行了。然而,自然地,在随后的几年里,代码已经丢失,所以我们所拥有的只是一个反编译选项。

我已经使用 dotPeek 和 JustDecompile 从 .dll 文件和 .exe 文件中获取 .csproj 文件(总共有 4 个 dll 和 1 个 exe),但是这两种解决方案都以几乎无穷无尽的语法流结束错误,在 dotPeek 的情况下,问题的符号,如对编译器变量的引用。

显然,我可以尽我所能地努力研究每个文件并修复每个语法错误,但看起来这可能需要花费一周的时间。我以前从未采用过反编译方法,所以当我意识到我正在查看的路径时,我立即怀疑我是否不知道自己在做什么。

对于 .net 中的反编译项目,这种情况听起来正常吗?有什么方法可以更有效地制作可构建的项目?我的工具用错了吗?这是混淆的症状吗(我对此完全没有经验)?

提前致谢,如果需要更多信息,请发表评论 - 因为这有点超出我的能力范围,我不能完全确定哪些信息有用,哪些信息没用。

最佳答案

我使用过 dotPeek、ILSpy 和 Reflector,它们在反编译成 C# 代码方面似乎都做得很好。我只反编译了一个完整的项目,这是使用 Reflector 进行的,它需要大量的手动工作来重新组装项目源代码并使其正常工作。

我怀疑混淆是您面临的问题;他们要么阻止上述工具进行反编译,要么反编译为代码的混淆(但有效)版本。在那种情况下,代码对人类来说没有多大意义。

有时,这些无穷无尽的语法错误实际上是一些缺失的引用。我不知道为什么编译器变量会出现在反编译代码中,因为它们不应出现在可执行文件中。

最近我遇到了与您相同的问题,在使用其中一种工具检查代码时,我使用了 Mono.Cecil 库来更改现有程序集。这有点老套,但在我的案例中节省了一些时间。我相信 Mono.Cecil 带有 ILSpy 包。

关于c# - 将 .NET 3.5 程序反编译为 C#,导出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18722229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com