有时候遇到别人写的那些有意思的C#程序,老想着看看内部的实现逻辑,但是苦于没有源码,那么就得另辟蹊径,想着办法去探索探索,所以可能就会涉及到C#反编译。

为了展示各个方便功能强大的功能,这里我先用C#写个简单的Demo程序

打开网易新闻 查看精彩图片

Reflector

这是我使用的第一款C#反编译软件,它的功能确失强大,可以借助一些插件来实现修改/保存

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

Reflector配合开源插件Reflexil可以实现反编译代码的修改和保存,现在,我们先去Github把插件下载下来

打开网易新闻 查看精彩图片

Reflexil插件支持Reflector、ILSpy、Telerik's JustDecompile.

回到Reflector,依次点击Tools->Add-ins,会添加插件的弹窗

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

我们点击该插件,会在右下方出现相应的内容

打开网易新闻 查看精彩图片

这里我们做个简单的修改

打开网易新闻 查看精彩图片

然后对我们的修改进行保存

打开网易新闻 查看精彩图片

默认保存文件名会在原有的文件名中加上Patched,最终可以看到修改之后的效果

打开网易新闻 查看精彩图片

我之前就是用Reflector帮一个人破解了一个小软件,它的功能是很强大,但是要收费,这一点我就不是很喜欢了,所以之后就没有用过它了。

ILSpy

它是基于C#开发的开源反编译工具

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

它是免安装的,下载下来解压即可使用

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

然后去下载reflexil.for.ILSpy.2.4.AIO.bin.zip并解压,解压后将Reflexil.ILSpy.Plugin.dll复制到ILSpy的解压目录

打开网易新闻 查看精彩图片

现在重新双击ILSpy.exe,打开ILSpy工具,可以看到我们的插件被加载到ILSpy了

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

修改方式和上面的一样

打开网易新闻 查看精彩图片

接下来我们去保存并运行

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

是不是觉得还是很实用

dnSpy

这个也是一个开源工具

打开网易新闻 查看精彩图片

它是基于其它工具整合开发出来的

打开网易新闻 查看精彩图片

这个工具我没怎么用过,只是在Github中有看到它,而且是开源的工具,所以我觉得有必要分享出来,有兴趣的可以去研究一下。

dotPeek

dotPeek是一款免费的反编译工具,如果只是查看反编译的代码的话,我用这款工具是用得最多的。

打开网易新闻 查看精彩图片

不过,我也仅仅是用来查看一些代码,并未用到其他较深的功能,它可以直接导出一个解决方案,并且可以用vs直接打开

打开网易新闻 查看精彩图片

我之前就用这个反编译了一个项目,由于该项目并未做加密,所以反编译出来的代码质量还是比较不错,直接基于反编译后的代码做了一些新功能的开发。

当然,还有一些其他的反编译工具,如:JustDecompile、de4dot等,然后拉,如果是混淆加密的程序的话,通过这些工具肯定是不行的。不知道大家有没有更好的东西,希望能分享给我。