本文主要是介绍Unity - 使用Reflector-Reflexil反编译游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Unity - 使用Reflector-Reflexil反编译游戏
Reflector与Reflexil
Reflector是.NET开发中必备的反编译工具,是一个收费工具,既有桌面版也有VS的插件版本。Reflexil则是桌面版Reflector的一个开源插件。破解安装教程网上有很多。为什么要用Reflexil,单纯使用Reflector进行整个代码项目的导出,然后在VS中就可以反编译、修改了,但是对于大型项目,比如Unity开发的游戏,Reflector反编译出来的结果会出很多错误,改起来特别麻烦。而开源的Reflexil实现了一个完整的指令编辑器,可以直接在Reflector中注入C#代码,实现修改程序集。
Unity Assembly-CSharp.dll
Unity中的自定义脚本都会打包到这个DLL中。
例子
Unity脚本如下,运行时屏幕右上角打印“Test”。
using UnityEngine;
namespace Test
{public class MonoBehaviourTest : MonoBehaviour{string abc;void Start(){abc = "Test";}private void OnGUI(){GUI.Label(new Rect(10, 10, 200, 50), abc);}}
}
选择Mono模式打包,在打包目录下找到Assembly-CSharp.dll,放到Reflector中即可查看源码。在修改之前,右键Assembly-CSharp -> Reflexil -> Save as,先把Assembly-CSharp.dll另存一份。
在脚本上右键可以注入变量、属性、方法等等:
Tools -> Reflexil,打开Reflexil后,选择方法,选择Edit可以直接修改方法的IL代码,也可以选择Replace all with code,即用C#代码替代这个方法,一般用这个。
修改后保存一下,重启一下Reflector即可看到修改后的代码。
最后将这个另存的修改后的Assembly-CSharp.dll,替换原本的,运行打包后的游戏。结果:
后记
为什么要学反编译?上述过程略过了很多细节,但是可以很清楚的看到,未加密的游戏破解是很容易的,所以游戏加密也是开发过程中的重中之重。当然学会了反编译,可以学习好游戏的代码是怎么写的。
链接:
Reflexil:https://github.com/sailro/Reflexil/releases
Reflector:https://www.red-gate.com/products/dotnet-development/reflector/
这篇关于Unity - 使用Reflector-Reflexil反编译游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!