WriteProcessMemory - 字符串长度错误

时间:2015-04-08 17:09:20

标签: c# winapi

目前我正在使用C#编写游戏培训师(请注意,我只是为了一个私人服务器而制作一个游戏教练,而不是为了让游戏成为"有史以来最好的玩家而且#34;)它运作顺利,但不是字符串。

当我第一次写字符串并且我有10个字符时,它正在工作(例如:#hellolady!)。当我输入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);

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

编辑有效的函数,你必须在GetBytes使用null终止符,然后它才能工作。

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

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

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