【发布时间】:2019-12-18 21:25:36
【问题描述】:
假设我有一个字符串:
std::string sc = "\\xfc\\xe8\\x82";
如何将 sc 字符串转换为等价的
unsigned char buf[] = "\xfc\xe8\x82";
我正在尝试将包含 shellcode 的字符串转换为无符号字符数组。
我尝试了以下方法:
char buf[5120];
strncpy(buf, sc.c_str(), sizeof(buf));
buf[sizeof(buf) - 1] = 0;
这似乎将字符串存储到 char 数组中,我需要 char 数组来存储/表示字节。
当我打印时:
//example 1
unsigned char buf[] = "\xfc\xe8\x82";
printf("%s", buf);
控制台输出:
ⁿΦé
当我打印时:
//example 2
char buf[5120];
strncpy(buf, sc.c_str(), sizeof(buf));
buf[sizeof(buf) - 1] = 0;
控制台输出:
\xfc\xe8\x82
如何将 sc 字符串转换为无符号字符数组,以便在打印 sc 时产生与示例 1 相同的输出。
【问题讨论】:
-
你为什么首先使用字符串?字符向量(或普通数组)就可以了。
-
您能举个例子吗?我是 C++ 新手。
-
为什么要数组?该字符串已经在后台使用了一个数组。如果您想要一个指向底层数组的指针,请使用
.c_str()(只读)或.data()(读/写)。 -
@asrdelinx:您的第二个示例是完全有效的 C++。 (虽然
unit8_t或std::byte会比无符号字符“更好”) -
我将添加我试图提供更多上下文的内容。