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);
}
目前我正在使用 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);
}