我遇到了WriteProcessMemory的问题,它在输入实际的字符串并将其作为实际字符串写入过程而不是十六进制表示当我执行\ x前缀时,是否有另一个方法这样做?
std::string HexToWrite;
std::cin >> HexToWrite; // I'm typing \x90
WriteProcessMemory(Process, Address, HexToWrite.c_str(), sizeof(HexToWrite), 0);
因此,不是写实际的字节0x90,而是写字符串:\ x90
答案 0 :(得分:0)
std :: string是一个容器,而不是char数组。在WriteProcessMemory调用中,将其作为size参数传递:
sizeof(HexToWrite)
这给出了容器的大小,而不是实际字符串的长度。
如果要获取字符串的长度,可以使用:
HexToWrite.Length()
或strlen(HexToWrite.c_str())
通常,我不会将std :: string用于字节数组,而会使用常规的char数组:
char* HexToWrite = "\0x90";