【问题标题】:Decompiling a .NET Framework v4.5 executable "not .NET assembly file" in dotPeek but executable runs fine在 dotPeek 中反编译 .NET Framework v4.5 可执行文件“不是 .NET 程序集文件”,但可执行文件运行良好
【发布时间】:2015-03-01 12:50:55
【问题描述】:

一位客户与他们以前的开发人员建立了联系,我正试图从他们的工资单可执行文件中提取源代码,不幸的是,作为一名网络开发人员,我对 .NET 框架没有太多经验。

编辑:我们的客户合法拥有该软件,但没有要求提供源代码,开发人员没有回复我们的通信。我问这个关于 SO 的问题的目的不是为了法律建议(我们已经有人处理),而是为了任何可用于反编译的选项。

我之前使用 JetBrains dotPeek 成功反编译过可执行文件,但它们都运行 .Net Framework v2.0/v4.5 框架。我目前正在使用的客户工资单可执行文件运行 .Net Core v4.5,dotPeek、ILSpy 或我作为 .NET 程序集文件运行的其他 C# 反编译软件无法识别它。

经过一番研究,我相信.Net Core 最近是开源的......但是我不确定如何继续进行反编译过程,或者此时是否有可能。有什么建议吗?

注意:我将接受“无法反编译,但您是否先尝试过 X、Y、Z?”的回答。我需要让客户知道是否可以完成,因为我们的日程安排很紧。

我所做的一些澄清:在dotPeek中打开program.exe,右键单击属性给我这个:

它声称“不是 .NET 程序集文件”,但我可以正常运行可执行文件。

编辑:是否可以从可执行文件中提取更多信息,以便我可以缩小另一种反编译方法?

我怀疑 .NET 反编译器在这里没有帮助。

【问题讨论】:

  • 你的机器上安装了 .NET 4.5 吗?
  • 是的,我可以运行可执行文件。
  • @AntonioBakula 你以前用.Net Core v4.5 平台反编译过可执行文件吗?
  • 一封措辞强硬的律师信可能会使开发人员交付客户支付的应用程序的源代码。如果客户没有支付开发费用而只是租用了软件或其他类似的东西,那么您所做的事情可能合法也可能不合法。
  • @YuvalItzchakov 我不确定,但是当我在 dotPeek 中打开程序集并检查属性时,它告诉我平台是“.Net Core v4.5”。

标签: c# .net decompiling ilspy dotpeek


【解决方案1】:

开发人员在开发网站上提出了一个合法的编程问题,应该得到有根据的回答。不是不需要的法律建议。反编译 dll 有很多正当理由。

当 dotnetpeak 建议使用“.Net Core v4.5”开发文件并且没有 MVID 时,它会建议该文件缺少 CLR 标头。

如果您将文件反编译回程序集,您可能会发现文件是在 VB6 中开发的标识标记。

找到一个好的 VB6 反编译器,您可能能够毫无问题地反编译该程序。不幸的是,您无法将 vb6 完全反编译回源代码,但您可以很好地了解应用程序的构建方式。

【讨论】:

  • 感谢@Jamie 的有益回复。我们目前正在与客户合作,将他们的数据拼凑起来,如果可行,我们可以节省很多钱。我试过vb-decompiler.org/download.htm 但是它说“这个程序是用未知的编译器编译的”。我将尝试通过 Hex Rays IDA 将其反编译回程序集。你有更多关于识别标记的信息吗?
  • 只需查找它的运行时文件的名称。然后查找使用这些引用的语言类型。如果它是在 VB6 中编译的,您将找到对 MSVBVM60.dll 的引用,我建议下载 PE Explorer 的试用版并检查导入查看器以查看它引用的内容。如果没有出现,请使用 PE Explorers Dissassembler。
  • 谢谢,不幸的是,它不是 VB6,而是 .NET 4.5 上的 C#。
  • 那么CLR头已经被混淆了。您可以通过在某种形式的流程编辑器中将 CLR 标头替换为合法标识符来对程序集进行模糊处理,以便对其进行反编译;但我不知道从哪里开始,也不能保证中间语言没有被进一步混淆,这会使结果很难阅读。
【解决方案2】:

.net core .net 的开源版本,目前正在进行中。你可以在微软公共github页面corefx看到每天的进展情况

我对 .net core 在问题中的含义有点困惑,但据我了解,目前还没有最终的 .net core 4.5,尽管它确实可用但不完整,为什么有人会在生产代码中使用它?

更多信息请阅读this blog post

【讨论】:

  • 不是我投反对票(反正我没有权限这样做)来澄清.net核心问题,我会上传一个截图。
  • 我没有,但你的回答根本没有意义。
猜你喜欢
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多