Какую кодировку используют строки, найденные в сегменте __DATA Mach-O, раздел __cfstring? - PullRequest
1 голос
/ 01 декабря 2010

Мне интересно, как правильно читать строки из определенного раздела двоичного файла Mach-O. (Это бинарный файл для iOS.)

Мне любопытно узнать о строках, найденных в сегменте __DATA, в разделе __cfstring. Эти разделы содержат массивы простых структур:

NSConstantString
{
    Class class;
    const char *string;
    int length;
}

Вопрос сводится к следующему: как вы решаете кодировку string?

1 Ответ

3 голосов
/ 01 декабря 2010

Это описано в источнике CFString доступно здесь . Это либо в ASCII, либо в UTF16 (в бесконечности процессора.) Также см. Исходный код clang, доступный здесь . Ищите GenerateConstantString. Постоянные строки в конечном итоге генерируются этим фрагментом кода , ищите GetAddrOfConstantCFString. Исходный код говорит, что константа CFString имеет формат

  struct __builtin_CFString {
     const int *isa; // point to __CFConstantStringClassReference
     int flags;
     const char *str;
     long length;
 };

(по крайней мере, в OS X, я не уверен насчет iOS.) flags сообщает вам, ASCII или UTF16.

...