c++将十六进制写入进程而不是字符串

C++ Writing Hex To Process Instead Of String

本文关键字:字符串 进程 十六进制 c++      更新时间:2023-10-16

我遇到了WriteProcessMemory的问题,它将实际字符串输入并将其作为实际字符串写入进程,而不是十六进制表示,当我做x前缀时,是否有另一种方法可以做到这一点?

std::string HexToWrite;
std::cin >> HexToWrite; // I'm typing x90
WriteProcessMemory(Process, Address, HexToWrite.c_str(), sizeof(HexToWrite), 0);

所以它不是写实际的字节0x90,而是写字符串:x90

std::string是一个容器,而不是字符数组。在WriteProcessMemory调用中,将其作为size参数传递:

sizeof(HexToWrite)

给出容器的大小,而不是实际字符串的长度。

如果你想获得字符串的长度,你可以使用:

HexToWrite.Length()strlen(HexToWrite.c_str())

一般来说,我不会对字节数组使用std::string,我会使用常规的字符数组:

char* HexToWrite = "x90";