Mach-O __DATA 段、__cfstring 部分中找到的字符串使用什么编码?
我想知道如何从 Mach-O 二进制文件的特定部分正确读取字符串。 (这是 iOS 的二进制文件。)
我对 __DATA
段、__cfstring
部分中找到的字符串感到好奇。这些部分似乎包含简单结构的数组:
NSConstantString
{
Class class;
const char *string;
int length;
}
问题归结为:如何决定字符串
的编码?
I'm wondering how to properly read strings from a specific section of a Mach-O binary. (This is a binary for iOS.)
I'm curious about the strings found in the __DATA
segment, __cfstring
section. These sections appear to contain arrays of simple structures:
NSConstantString
{
Class class;
const char *string;
int length;
}
The question comes down to: how do you decide the encoding of the string
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它在可用的 的
CFString
源代码中进行了描述在这里。它采用 ASCII 或 UTF16(以处理器字节顺序表示)。另请参阅
clang
的源代码,可用这里。查找GenerateConstantString
。常量字符串最终由这段代码生成,查找GetAddrOfConstantCFString
。源代码说常量 CFString 的格式(至少在 OS X 上,我不确定 iOS 上)。
flags
告诉你它是 ASCII 还是 UTF16。It's described in the source of
CFString
available here. It's either in ASCII or UTF16 (in the processor endian-ness.)Also see the source code of
clang
, available here. Look forGenerateConstantString
. Constant strings are eventually generated by this piece of code, look forGetAddrOfConstantCFString
. The source code says that the constant CFString is of the format(at least on OS X, I'm not sure about iOS.)
flags
tells you whether it's ASCII or UTF16.