gpt4 book ai didi

c++ - 如何获取包含 NULL 字符的 shellcode 字符串的长度

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:51 25 4
gpt4 key购买 nike

我有一串 shellcode,它们之间有 NULL 字符,我无法检测到它的长度,我尝试了 std::string.length() 方法,但它只计算到 NULL 字符之后不算数。

这里是示例代码。

   std::string shell_str = "\x55\x48\x89\x00\x00\x00\x00\xC3\x90";
std::cout << "shell : " << shell_str << std::endl;
std::cout << "shell length : " << shell_str.length() << std::endl;

输出:外壳:呃...外壳长度:3

但是字符串的长度是 9,我也尝试将它复制到 vector 但仍然没有得到所需的输出。

已发布完整代码片段 here

最佳答案

问题不在于计算 shell_str 的长度,问题出在您用来初始化 shell_str 的文字字符串上. std::string 的构造函数将在“终结者”处停止。

您需要使用另一个 std::string constructor , 明确地告诉它字符串的实际长度:

std::string shell_str("\x55\x48\x89\x00\x00\x00\x00\xC3\x90", 9);

此外,由于“字符串”包含任意数据,您也不能将其打印为字符串。

如果你想要一个任意字节的“字符串”,我建议你使用 std::vector<uint8_t>相反。

关于c++ - 如何获取包含 NULL 字符的 shellcode 字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51056711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com