#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.