客户端已经与他们之前的开发人员烧毁了桥梁,我试图从他们的工资单可执行文件的左边提取源代码,不幸的是,作为一个Web开发人员,我对.NET没有多少经验框架。
编辑:我们的客户合法拥有该软件,但没有要求源代码,开发人员没有回应我们的通信。我打算在SO上提出这个问题不是为了获得法律建议(我们已经让人们处理了这个问题),而是提供了任何可用于反编译的选项。我之前已成功使用JetBrains dotPeek反编译可执行文件,但它们都运行.Net Framework v2.0/v4.5
框架。我正在使用的客户端工资单可执行文件运行.Net Core v4.5
,这是dotPeek,ILSpy或其他C#反编译软件无法识别的,我作为.NET程序集文件运行。
经过一番研究后,我相信.Net Core
最近是开源的...但是我不知道如何继续进行反编译过程,或者甚至可能在这一点上。有什么建议吗?
注意:我会接受#34的答案;反编译是不可能的,但你先尝试过X,Y,Z吗?"。我需要让客户知道是否可以完成,因为我们的时间安排很紧。
对我所做的一些澄清:在dotPeek中打开program.exe
,右键单击属性给了我这个:
它声称"不是.NET程序集文件",但我可以运行可执行文件。
编辑:是否可以从可执行文件中提取更多信息,以便缩小另一种反编译方法?我怀疑.NET反编译器在这里没有帮助。
答案 0 :(得分:5)
开发人员在开发网站上询问了一个合法的编程问题,值得一个受过教育的回应。不需要的法律建议。反编译dll有很多正当理由。
当dotnetpeak建议使用“.Net Core v4.5”开发文件并且没有MVID时,它会建议该文件缺少CLR标题。
如果您将文件反编译回程序集,您可能会发现该文件是在VB6中开发的识别标记。
找一个好的VB6反编译器,你可能能够解决该程序而不会出现太多问题。遗憾的是,您无法将vb6完全反编译回源代码,但您可以很好地理解应用程序的构造方式。
答案 1 :(得分:2)
针对.NET Core运行时的.NET程序集没有什么特别之处。它只使用不同的参考组件。您必须告诉您的反编译器,以便使用正确版本的mscorlib等。无论程序的目标是什么,Silverlight都是唯一明智的,因为.NETCore太新了。
但是在这样的场景中你最可能遇到的问题是程序员通过混淆他的程序集来保护他的IP。薪资计划几乎总是在合同上创建,客户只需支付定制工作,并且没有核心或源代码的合法所有权。
答案 2 :(得分:0)
.net核心.net的开源版本目前正在进行中。您可以在microsoft public github页面corefx
上查看日复一日的进度我对问题中 .net核心的含义感到有些困惑,但据我所知,还没有最终的.net核心4.5,即使它确实可用但尚未完成,为什么有人会在生产代码中使用它?
有关详细信息,请参阅this blog post