C#反编译工具参照博客:。
其中有工具用于脱壳和去混淆:de4dot、NETUnpack、Simple Assembly Explorer, DotNet Id用于查明加的壳的种类,本篇博客暂时不讨论加壳类软件的反编译与源码的恢复情况。
本次反编译的软件为c#编写的一款财物供应系统,源码本生未加混淆,使用的反编译工具包括: Reflector、ILspy、JustDecompile、DnSpy、dotPeek等五款工具。其中 Reflector的软件并非开源,需要下载破解版才能使用。
首先要明确反编译的对象是安装后的exe文件,而非安装包,如图:
图1
图2
图1所示即是安装包的exe文件,强行反编译该文件无法成功。博主在第一次反编译时就是想强行反编译安装包而不是安装完成后再编译的,真的是太垃圾咯。希望各位不要像小白一样犯这个低级错误。安装完成后的程序见图2,对图中的红框圈出来的exe文件反编译之后即可得到源代码(该源代码有误码的地方需要修改后方能使用)。
微软自带的反编译工具Reflector需要破解后方能使用,博主提供的软件有激活文档。可以参照文档的方法激活。Reflector反编译出来的代码质量较高,但是对于resource文件无法处理,以及在引用部分需要手动去添加动态库文件。对于resource文件的处理,其他几款软件要优秀的多,detpeek、dnspy、ILspy可以有效地解析resource文件,justcompile和Reflector均不可解析resource文件,需要导出到工程后加以处理方能使用。用vs打开后可以看到效果如图3:
图3 未解析的resource文件和解析成.resx后缀的文件
至于修改代码的部分就不再叙述,一般的错误都是变量的未正确定义或者是dll文件的缺失。因此建议以dnspy、ILspy、detpeek的代码为基础,参照Reflector导出的代码修改后再使用。