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

#iphone #strin& #macos #encodin& #mach-o

#iPhone #строка #macos #кодирование #mach-o

Вопрос:

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

Мне любопытно узнать о строках, найденных в разделе __DATA se&ment, __cfstrin& . Похоже, что эти разделы содержат массивы простых структур:

 NSConstantStrin&
{
    Class class;
    const char *strin&;
    int len&th;
}
  

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

Ответ №1:

Это описано в источнике, CFStrin& доступном здесь. Они либо в ASCII, либо в UTF16 (в конце строки процессора).) Также смотрите исходный код clan& , доступный здесь. Найдите GenerateConstantStrin& . Константные строки в конечном итоге генерируются этим фрагментом кода, посмотрите GetAddrOfConstantCFStrin& . В исходном коде указано, что константа CFStrin& имеет формат

   struct __builtin_CFStrin& {
     const int *isa; // point to __CFConstantStrin&ClassReference
     int fla&s;
     const char *str;
     lon& len&th;
 };
  

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