WriteProcessMemory - 字符串长度错误

WriteProcessMemory - String length bug

目前我正在使用 C# 编写一个游戏训练器(请注意,我只是为了好玩,为私人服务器制作一个游戏训练器,而不是为了破解游戏成为 "best player ever")并且它正在运行顺利,但不是字符串。

当我第一次写字符串并且我有 10 个字符时,它可以正常工作(例如它会写:hellorady!)。当我键入 8 个字符(例如 hellolol)时,它会自动写入 10 个字符,因此新字符串将是 hellololy!.

我不知道为什么会遇到这个问题,这是我的 WriteString:

public static bool WriteString(IntPtr handle, int address, string value)
{
    int written;

    byte[] data = Encoding.Default.GetBytes(value);

    return WriteProcessMemory(handle, address, data, data.Length, out written);
}

我的 WriteProcessMemory:

[DllImport("Kernel32.dll")]
static extern bool WriteProcessMemory(IntPtr handle, int lpBaseAddress, byte[] lpBuffer, int nSize, out  int lpNumberOfBytesWritten);

希望有人能帮助我。

编辑有效的函数,您必须在 GetBytes 处使用空终止符,然后它才会有效。

public static bool WriteString(IntPtr handle, int address, string value)
{
    int written;

    byte[] data = Encoding.Default.GetBytes(value + "[=10=]");

    return WriteProcessMemory(handle, address, data, data.Length, out written);
}