我想知道是否可以对任意非打包项目.NET进行完全反编译?如果没有,要满足什么条件?如果是,是否有可以自动执行此操作的工具?我不是想知道基本的反编译器,而是想知道完整的项目恢复功能是否可以再次用VS编译结果。


UPD1

但尝试仅应用dotPeek适用于我的情况。不幸的是,输出看起来并不像现成的项目,但所有错误似乎都是可调试的。缺点是无法自动将dll和exe都导出到一个项目中(需要可怜的人编辑.sln文件)。一个/多个.NET程序集的通用解决方案。也许有一些插件/扩展应该可以解决这个问题?如果找到一个,将更新此帖子。

评论

提示:.NET反射器+ reflexil

最终的目的是什么?您是否尝试在更改后重新编译为可运行的.net二进制文件?如果是这样,也许有更好的方法。

@baordog说我正在使用exe和一堆用.NET编写的dll,我想为这个项目制作一个供个人使用的分支

修改二进制文件可能会更轻松。反编译的“项目”将很难按原样解释,并且不能保证它将正确构建。

@baordog好,我相信二进制修改不是编写代码的方式。我的问题是关于可以适当恢复项目的条件以及不允许我解决此任务的障碍。换句话说,现有工具/技术的机会和局限性。

#1 楼

JetBrains dotPeek是免费的反编译器,可以选择将整个程序集反编译为VS项目:



评论


我最近使用dotPeek做到了这一点,它还可以反编译目标项目的子模块。经过一些调整后,我得以重新编译该项目。

–多米尼克·安塔尔(Dominik Antal)
2015年5月14日15:00

根据我的经验,JustDecompile肯定会生成更好的项目。

–马克·吐温
16年5月6日在6:54

#2 楼

更新:dnSpy现在是我去.net反编译的工具。它是开源的,它可以导出到Visual Studio项目,并且调试器的运行就像一个魅力。

https://github.com/0xd4d/dnSpy

原始答案:Telerik JustDecompile也可以导出到Visual Studio项目。我最近使用它,并且对代码进行了很小的修改。这是一个免费工具。

http://www.telerik.com/products/decompiler.aspx

评论


我尝试了一下,它给了我所有这些奇怪的不可编译语法,例如foo。 Baz,foo。$ this等,IIRC。

– Flarn2006
19-10-7的3:59

#3 楼


我想知道是否可以对任意未打包项目.NET进行完全反编译吗?


ILSpy之类的工具在对任意未打包项目进行反编译方面做得很好。 NET二进制文件。


如果是的话,有没有可以自动执行此操作的工具?


ILSpy是开源的,因此您可以编写自己的工具代码以自动执行反编译过程。

评论


看起来答案实际上是“否”,并且该工具仅在需要时才编写我自己的解决方案。

–见
15年2月12日在13:58

#4 楼

您是否尝试过以下工具:

用于C#/ VB


.NET Reflector-
http://www.red-gate.com/产品/ dotnet开发/ reflector /

JustDecompile-http://www.telerik.com/products/decompiler.aspx