1

Mach-O バイナリの特定のセクションから文字列を正しく読み取る方法を知りたいです。(これは iOS 用のバイナリです。)

__DATAセグメント、__cfstringセクションで見つかった文字列に興味があります。これらのセクションには、単純な構造の配列が含まれているように見えます。

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

質問は次のとおりです。のエンコーディングをどのように決定しますstringか?

4

1 に答える 1

3

CFString利用可能なhereのソースに記載されています。ASCII または UTF16 (プロセッサのエンディアン) のいずれかです。 のソース コードも参照してください。ここclangから入手できます。を探します。定数文字列は最終的にこのコードによって生成されます。ソースコードによると、定数 CFString は次の形式ですGenerateConstantStringGetAddrOfConstantCFString

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

(少なくともOS Xでは、iOSについてはわかりません。)flagsASCIIかUTF16かがわかります。

于 2010-12-01T09:00:52.647 に答える