在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需解决、或者由于电脑挂了、旧代码覆盖新代码,而在这种情况下,我们不能直接在当前的代码中修改这个Bug然后发布,这会导致更严重的问题,因为相当于版本回退了。还有电脑挂了代码整个都没有,这种情况下 我们只能只能利用一些逆向的技巧和工具了 来解析在服务器发布好的dll。那么你只是单纯的修改一个.Net程序集中的某个方法或功能,而且这个程序集还是出自于你自己或你所在团队之手,这实在是一件非常容易的事情,这和破解别人的程序完全不同,你不会遇到无法破解的加密算法,也不会遇到让人恶心的加壳混淆。
所以我要把用过的工具一个个列出来总结一下。
推荐四大发编译工具:
1. .Net Reflector(收费)
2. ILSpy/dnSpy(免费)
3. DotPeek(收费)
4. dotMemory(免费)
ILSPY和dnSpy都是.NET反编译器,它们都具有以下功能:
1. 程序集编辑器
2. 反编译器
3. 调试器
4. 标签和标签组
5. 主题(蓝色、深色、浅色和高对比度)
如果你想帮助改进这些工具,可以fork项目并发送pull请求。
最新的发布版本:https://github.com/0xd4d/dnSpy/releases
最新构建:https://ci.appveyor.com/project/0xd4d/dnspy/build/artifacts
另一款反编译工具是JetBrains开发的dotPeek,它是.Net工具套件中的一个小众工具。dotPeek生成的代码质量很高,它还可以尝试从源代码服务器上抓取代码。DotPeek的导航功能和快捷键非常便捷,它还能精确查找符号的使用,并支持插件。dotPeek不能与Visual Studio集成,但它的最大特色是Visual Studio风格,这对于长期在Visual Studio下进行开发的人来说应该更亲切一些。
官方网址:http://www.jetbrains.com/decompiler/
另外一款反编译器是Telerik JustDecompile,需要输入信息安装。如果不喜欢这个工具,可以卸载它。
Telerik JustDecompile是一个免费的.NET反编译器,但也提供商业支持。它生成的代码质量较高,可以为反编译程序集得到的代码创建一个项目。JustDecompile提供了强大的查找功能,支持全文查找和符号使用查找。此外,它还具有插件系统,目前在Telerik官方网站上有两个可用的扩展。然而,JustDecompile无法与Visual Studio集成。
官方网址:http://www.telerik.com/products/decompiler.aspx
总结:在使用过程中,推荐的顺序如下:dnSPY > ILSPY > Net Reflector > doPeek。下面是一个dll里面的方法反编译后的对比: