有时候遇到别人写的那些有意思的C#程序,老想着看看内部的实现逻辑,但是苦于没有源码,那么就得另辟蹊径,想着办法去探索探索,所以可能就会涉及到C#反编译。
为了展示各个方便功能强大的功能,这里我先用C#写个简单的Demo程序
![](http://dingyue.ws.126.net/2020/0922/0c9ac7aap00qh2dsh0009c000ff009cm.png)
Reflector
这是我使用的第一款C#反编译软件,它的功能确失强大,可以借助一些插件来实现修改/保存
![](http://dingyue.ws.126.net/2020/0922/671728d6p00qh2dsh000rc000ud00gom.png)
![](http://dingyue.ws.126.net/2020/0922/1c065c6dp00qh2dsh002ac000wf00k8m.png)
Reflector配合开源插件Reflexil可以实现反编译代码的修改和保存,现在,我们先去Github把插件下载下来
![](http://dingyue.ws.126.net/2020/0922/e37eb068p00qh2dsh001kc000x400gjm.png)
Reflexil插件支持Reflector、ILSpy、Telerik's JustDecompile.
回到Reflector,依次点击Tools->Add-ins,会添加插件的弹窗
![](http://dingyue.ws.126.net/2020/0922/aab1d4e2p00qh2dsh0008c000de009lm.png)
![](http://dingyue.ws.126.net/2020/0922/e84362f4p00qh2dsh000ac000de009lm.png)
![](http://dingyue.ws.126.net/2020/0922/04f71485p00qh2dsh000dc0005p008im.png)
我们点击该插件,会在右下方出现相应的内容
![](http://dingyue.ws.126.net/2020/0922/67be64bfp00qh2dsh002ic000wf00k8m.png)
这里我们做个简单的修改
![](http://dingyue.ws.126.net/2020/0922/b693e977p00qh2dsh000sc000mb00bqm.png)
然后对我们的修改进行保存
![](http://dingyue.ws.126.net/2020/0922/c404972dp00qh2dsh001vc000gz00flm.png)
默认保存文件名会在原有的文件名中加上Patched,最终可以看到修改之后的效果
![](http://dingyue.ws.126.net/2020/0922/1ce615f1p00qh2dsh000rc000q300gfm.png)
我之前就是用Reflector帮一个人破解了一个小软件,它的功能是很强大,但是要收费,这一点我就不是很喜欢了,所以之后就没有用过它了。
ILSpy
它是基于C#开发的开源反编译工具
![](http://dingyue.ws.126.net/2020/0922/88a59be6p00qh2dsh0037c0019i00kzm.png)
![](http://dingyue.ws.126.net/2020/0922/14947888p00qh2dsh002jc000y300ltm.png)
它是免安装的,下载下来解压即可使用
![](http://dingyue.ws.126.net/2020/0922/96d4093fp00qh2dsh003cc000mb00klm.png)
![](http://dingyue.ws.126.net/2020/0922/c4cc4888p00qh2dsh001jc000ku00fam.png)
然后去下载reflexil.for.ILSpy.2.4.AIO.bin.zip并解压,解压后将Reflexil.ILSpy.Plugin.dll复制到ILSpy的解压目录
![](http://dingyue.ws.126.net/2020/0922/79c66a03p00qh2dsh003ac000og00kjm.png)
现在重新双击ILSpy.exe,打开ILSpy工具,可以看到我们的插件被加载到ILSpy了
![](http://dingyue.ws.126.net/2020/0922/45b75409p00qh2dsh0020c000ku00fam.png)
![](http://dingyue.ws.126.net/2020/0922/937c26aep00qh2dsh001xc0010w00i5m.png)
修改方式和上面的一样
![](http://dingyue.ws.126.net/2020/0922/3373c3b1p00qh2dsh0023c000vi00gym.png)
接下来我们去保存并运行
![](http://dingyue.ws.126.net/2020/0922/2b8382c6p00qh2dsh001nc000ek00f9m.png)
![](http://dingyue.ws.126.net/2020/0922/a728954fp00qh2dsh0007c000mo00dlm.png)
是不是觉得还是很实用
dnSpy
这个也是一个开源工具
![](http://dingyue.ws.126.net/2020/0922/2c0a34b9p00qh2dsh001tc001fc00hdm.png)
它是基于其它工具整合开发出来的
![](http://dingyue.ws.126.net/2020/0922/415005f7p00qh2dsh000rc000mx006zm.png)
这个工具我没怎么用过,只是在Github中有看到它,而且是开源的工具,所以我觉得有必要分享出来,有兴趣的可以去研究一下。
dotPeek
dotPeek是一款免费的反编译工具,如果只是查看反编译的代码的话,我用这款工具是用得最多的。
![](http://dingyue.ws.126.net/2020/0922/18e9f4cep00qh2dsh002rc000sd00kkm.png)
不过,我也仅仅是用来查看一些代码,并未用到其他较深的功能,它可以直接导出一个解决方案,并且可以用vs直接打开
![](http://dingyue.ws.126.net/2020/0922/5188242fp00qh2dsh000yc000h80091m.png)
我之前就用这个反编译了一个项目,由于该项目并未做加密,所以反编译出来的代码质量还是比较不错,直接基于反编译后的代码做了一些新功能的开发。
当然,还有一些其他的反编译工具,如:JustDecompile、de4dot等,然后拉,如果是混淆加密的程序的话,通过这些工具肯定是不行的。不知道大家有没有更好的东西,希望能分享给我。
热门跟贴