我们知道有多种方法可以通过(dotpeek、ILSpy 和 Reflector)反编译 Unity3d DLL 文件以对 C# 源代码进行逆向工程
示例:[目标文件] Unity3D_Game_RootPath/Managed/Assembly-CSharp.dll
- Assembly-CSharp.dll =>(上述工具之一)=> 导出/保存到 .sln
- C# 项目文件扩展名 .sln => 在 VisualStudio 中打开
- 切换到“解决方案资源管理器”以检查并添加所有必要的参考(要包含的库,如 System、UnityEngine.dll、UnityEngineUI.dll 等......)
- 通过第 3 步将删除大部分参考错误(IDE 中的红色突出显示)
但是,通常反编译的源代码仍然包含以下很多错误模式:
例子:
iTween.<>f__switch$mapA == null
错误类型 I:名称“xxx”不存在 (CS1513)
错误类型 II:意外字符“$”
想通过上面提到的反编译过程知道上述一般错误的原因是什么,以及删除它们的一般方法是什么。
上述过程的最终目标是尝试消除重新编译错误,并成功地将 C# 反编译工具(dotpeek、ILSpy 和 Reflector)生成的源代码重新编译为可运行的 dll 以替换旧的。