0

クラスダンプはCFObjects/structsによって混乱しますか?アプリケーションでクラスダンプを使用しましたが、メソッドの引数の1つはBInstantMessageであるstructarg1でした。

struct BInstantMessage {
    void **_field1;
    struct CFString _field2;
    unsigned short *_field3;
    struct DTextStyle _field4;
    struct BUser *_field5;
    struct BChat *_field6;
};

struct CFString {
    void **_vptr$CFObject;
    struct __CFString *mCFRef;
    _Bool mIsMutable;
};

struct __CFString;

では、このarg1からCFStringRefまたはNSString *を取得するにはどうすればよいですか?クラスダンプが一部のCFStringRefをCFString定義に置き換えていると思いますが、それは単なる推測です...必要なのは、BInstantMessageであるarg1からCFStringRefを取得することだけです。

Thnaks!

4

1 に答える 1

0

アプリケーションは、CoreFoundationオブジェクトにC++ラッパーを使用しています。struct CFStringinはBInstantMessageこのタイプのオブジェクトです。あなたが欲しい(NSString *)(arg1._field2.mCFRef)

このvoid **_vptr$CFObjectフィールドは、ここでの主要なヒントであり、仮想スーパークラスのvtableを表し、一般的なC++プレフィックスの命名規則CFObjectと組み合わされています。m

于 2011-03-26T21:07:46.070 に答える