C# 用于微软 .NET 的开发。我们可以使用尝试使用 IDA 对其反汇编,然而你只能收到一个无情的 Sorry, the current file is not decompilable
。C# 反编译需要一个专门工具。
Note
Unity 同样使用 C#。对于使用 Mono 作为脚本后端 (Scripting Backend) 的 Unity 游戏,可以使用下面介绍的 C# 反编译工具对 Assembly-CSharp.dll
反编译,即可得到源码。
dnSpy
dnSpy 是一个调试器和 .NET 程序集编辑器。它提供了和 Visual Studio 类似的界面,并且有官方中文!
我们关心的特性有这几个:
- 调试 .NET Framework、.NET 和 Unity 游戏程序集,无需源代码
- 所有元数据都可以编辑
- 使用 IntelliSense 编辑 C# 或 Visual Basic 中的方法和类,无需源代码
- 在 C# 或 Visual Basic 中添加新的方法、类或成员
Note
所以没有用反逆向机制的 C# 或 .NET 程序是很容易被破解的……
原始的 dnSpy 已经在 2020 年归档,现在仍在活跃的是分支版本 dnSpyEx。
dnSpy 采用和 VS 类似的文件组织架构,导入的文件显示在 “程序集资源管理器” 中
一个文件被划分为以下部分(从上到下):
- PE
- 类型引用
- 引用
- 类 (
{}
)
我们主要关注的是 {}
下的那些方法。
如果你需要全局查找字符串,请使用 “搜索程序集” 功能,并选择搜索 “数字 / 字符串”。它可以在工具栏最右端、“编辑” 菜单中找到,或者按快捷键 Ctrl + Shift + K。