什么是\ 363 \ 353 \ 377 \ 377 \ 377 \ 177?

时间:2011-06-02 01:43:46

标签: c gdb

(gdb) p (char*)0x7fffffffe9c8
$16 = 0x7fffffffe9c8 "\363\353\377\377\377\177"

它看起来不像ascii或multibyte,那是什么?

4 个答案:

答案 0 :(得分:7)

这些是octal个字符转义符。它们通常用于将字节插入到不具有文本含义或需要具有特定二进制值的字符串中。例如,\377是十六进制值ff或十进制255,这在ASCII中是ÿ,但在这种情况下很可能具有非常不同的含义。

答案 1 :(得分:5)

这不是文字。看起来你正在检查的地址包含另一个指向堆栈上某些东西的指针。试试(char **)0x7fffffffe9c8或其他一些双指针类型。

编辑:详细说明,OP正在检查调试器中的非文本数据并询问编码。正确答案就是它不是文本。它是一个整数0x7fffffffebf3,它几乎可以肯定是一个指向字符串的指针(因为它没有对齐并指向堆栈的某个位置),这意味着原始指针可能是char **类型而不是char *

答案 2 :(得分:0)

您提出的部分可以是该地址的shell代码。

答案 3 :(得分:-1)

尝试p / x

这应该以十六进制格式打印值