案例游戏下载
首先在网上下载个游戏案例,我就以Captain Molly游戏为例。
这个游戏玩家默认生命值有5点,咱们通过dll注入修改为10点。
dnSpy
我使用dnSpy来查看Unity游戏生成的dll代码,当然你们也可以使用其他工具。
Unity游戏脚本代码最终是生成在Assembly-CSharp.dll里面,我们通过dnSpy打开Assembly-CSharp.dll进行查看。
首先可以看到使用的运行库
我们找到玩家生命值代码
通过代码可以发现,我们可以在其它dll里面调用RestoreHealth来修改玩家的生命值
(当然也可以直接修改这里的代码,这次主要演示dll注入修改)。
HKBH.dll
新建一个C# 类库,Framework就选择和前面一致的4。
添加引用
把Assembly-CSharp.dll和UnityEngine开头的dll都添加进来。
HKBHClass
新建一个HKBHClass类。
using UnityEngine;
namespace HKBH
{
public class HKBHClass
{
public static void Init()
{
HKBHClass.HKBHClassInstance = new GameObject();
HKBHClass.HKBHClassInstance.AddComponent<Hack>();
UnityEngine.GameObject.DontDestroyOnLoad(HKBHClassInstance);
}
public static void OnDestroy()
{
GameObject.Destroy(HKBHClassInstance);
}
private static GameObject HKBHClassInstance;
}
}
Hack
新建一个Hack类。
using UnityEngine;
using ChatonShotgun;
namespace HKBH
{
class Hack : MonoBehaviour
{
PlayerHealth playerHealth = FindObjectOfType<PlayerHealth>();
private void Update()
{
playerHealth.RestoreHealth(10);
if (Input.GetKeyDown(KeyCode.L))
{
HKBH.HKBHClass.OnDestroy();
}
}
}
}
代码写完以后就可以生成dll了。
SharpMonoInjector
我们使用SharpMonoInjector工具来注入dll,当然你也可以使用其他的或者自己写一个。
测试
前面所有东西都准备好以后,打开游戏,然后使用SharpMonoInjector命令行版本来注入。
管理员身份打开cmd
使用教程
案例
结果