是否有可用的工具来获取您已经从C#或Visual Basic编译的已经编译的.dll或.exe文件,并从中获取原始源代码?

评论

ILSpy可能是最佳选择(IMHO)

因为反编译.net非常容易,所以大多数.net代码都受到保护或模糊处理。因此,要使用答案中建议的任何工具,必须首先删除此保护(如果有)。

#1 楼

ILSpy是一个很棒的开源反编译器。


ILSpy功能


汇编浏览
IL反汇编
支持C#5.0 “ async”
反编译为C#
支持lambda和'yield return'
显示XML文档
反编译为VB
节省资源
将反编译的程序集另存为.csproj
搜索类型/方法/属性(子字符串)
基于超链接的类型/方法/属性导航
基本/派生类型导航
导航历史记录
BAML到XAML反编译器
将程序集另存为C#项目
查找字段/方法的用法
可通过插件(MEF)扩展
程序集列表



评论


将其与此有用的Visual Studio SourceFly附加组件结合使用,以便可以从Visual Studio打开ILSpy。尽管它在最新版本中不支持Visual Studio 2012。

–约瑟夫
13年3月22日在4:48

#2 楼

我曾经使用过JetBrains dotPeek(免费),但取得了一些成功。

我曾经使用过的任何JetBrains软件都非常可靠。

“原始源代码”,但是C#可读性很强-关于我希望得到的最接近的东西。从他们的网站引用:


dotPeek的优点是什么?



将.NET 1.0-4.5程序集反编译为C#
对.NET的支持。 dll.exe.zip.vsix.nupkg.winmd文件
快速跳转到类型,程序集,符号或类型成员
轻松导航至符号声明,实现,派生符号和基本符号等
通过高级显示搜索结果来精确搜索符号用法
继承链概述
支持从源服务器下载代码
语法高亮显示
完整的键盘支持
dotPeek是免费的!




最后一点是免费的,就像免费啤酒一样,而不是言论自由。

#3 楼

最近,我一直在使用dnSpy [由de4dot的创建者从ILSpy分叉]作为我的主要工具,用于反编译和实时调试.NET代码

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



与ILSpy的主要区别:


使用dnLib读取程序集(与ILSpy的Mono.Cecil相比)

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


dnlib的创建是因为de4dot需要强大的.NET程序集库
,该库可以处理所有类型的混淆程序集。 de4dot曾经使用Mono.Cecil,但是由于Mono.Cecil无法处理混淆的程序集,因此
不完全支持混合模式程序集,不像CLR一样读取.NET程序集
de4dot还需要许多其他缺少的功能,dnlib是必需的。该API之所以类似,是因为它使de4dot到dnlib的移植变得容易得多。


评论


它与ILSpy有何不同?

– BlueRaja-Danny Pflughoeft
2015年12月3日23:48

这是我的第一个答案,链接到外部讨论合适吗? :reddit.com/r/ReverseEngineering/comments/3jau4m / ... ...我也将在上面进行总结。

–卡利布
2015年12月3日23:59



我可以担保dnSpy,它认为它比那里的任何其他类似.NET工具都要好。它甚至可以调试过程。

–多米尼克·安塔尔(Dominik Antal)
16年2月11日在16:38

我真的可以推荐这个。这是我发现的唯一支持汇编调试的免费工具。

– Bennofs
16年5月5日在21:33

与此Visual Studio扩展一起使用。

– orad
19年5月31日下午22:00

#4 楼

有一个名为JustDecompile的免费工具可以执行此操作。

一些功能:



从程序集中创建Visual Studio项目,以便无需复制和粘贴代码即可导出丢失的项目或获得多个类。目前,JustDecompile只能将反编译的代码导出到C#。
直接从命令提示符导出代码
快速加载核心.NET程序集(.NET 2,.NET3.5,.NET 4,.NET)。 NET 4.5,WinRT元数据和Silverlight)
直接编辑加载到程序中的程序集



评论


JustDecompile有一个De4Dot Deobfuscator插件,可以帮助混淆exe文件

–迈克尔·巴希格(Michael Bahig)
17年8月24日在21:18

#5 楼

我已经多次使用.NET Reflector(注意:商业版,但可以试用),并且非常喜欢它:

http://www.red-gate.com/products/dotnet-development/reflector/

评论


用例的一些示例可以很好地补充此答案。目前,它太模糊了,除了提供工具及其网站之外,没有太多用处。提供一些实际使用的示例有助于更好地定义产品。

– JMcAfreak
13年3月20日在17:09

#6 楼

如果您对API级别的反编译器感兴趣:https://code.google.com/p/facile-api/(尽管使用Java)

评论


是的我正在寻找一个Java库!谢谢 :)

– KYHSGeekCode
18/12/30在10:03

让我知道你在做什么;-)干杯

– TomSmartBishop
18/12/31在11:19

我期望将“ .NET支持”功能添加到此Disassembler应用程序(github.com/KYHSGeekCode/Android-Disassembler)。 :)

– KYHSGeekCode
18年12月31日在11:30

好的,让我知道如何解决。

– TomSmartBishop
19年1月3日在10:11

#7 楼

对于ILSPY是一个非常出色的.net反编译器,我会给出第二个答案。另外,请检查de4dot以消除混淆。这是一个很酷的实践写照。
http://blogs.cisco.com/security/talos/reversing-multilayer-net-malware

编译的Visual Basic可能是一种不同且痛苦的动物。
http://vrt-blog.snort.org/2014/08/discovering-dynamically-loaded-api-in.html?m=1

评论


编译后的Visual Basic(6)与.NET有什么关系?

–托马斯·韦勒(Thomas Weller)
15年3月24日在22:04

最初的问题也询问有关Visual Basic的问题。

– tyh
15年3月25日在18:47

#8 楼

.NET程序集(.exe和.dll)可以在Decompiler.com上进行在线反编译。

评论


“发布好的,相关的答案,并且如果某些(但不是全部)碰巧是关于您的产品或网站的,那没关系。但是,您必须在答案中公开您的从属关系。”

–PawełŁukasik
9月21日5:52

@PawełŁukasik给出了用户名,我认为有资格公开,不是吗?但是我还会添加一条注释,以防用户名更改😉...但我确实找不到答案。我会请其他mod看看并征求他们的建议。不过,我觉得投反对票就足够了。

– 0xC0000022L♦
9月28日19:45



@ 0xC0000022L我希望事情很明确,但是同意可能已经足够了。谢谢编辑。

–PawełŁukasik
9月29日下午6:21